Hbase restFul API
获取hbase版本
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/version/cluster
1.2.6
获取集群状态:
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/status/cluster
4 live servers, 0 dead servers, 1.0000 average load
4 live servers
..........
获取hbase非系统表表名列表
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/
hbase_test
hbase_yarnlog
获取hbase所有的命名空间
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/namespaces
default
hbase
某个命名空间下表名
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/namespaces/namespace/tables
eg:curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/namespaces/default/tables
hbase_test
hbase_yarnlog
获取表结构:
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/hbase_yarnlog/schema
{ NAME=> 'hbase_yarnlog', IS_META => 'false', COLUMNS => [ { NAME => 'yarnlog', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => '2147483647', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true' } ] }
获取表区域:
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/hbase_yarnlog/regions
hbase_yarnlog,,1519360842078.cb06e1f05268947e9598702137918f0e. [
id=1519360842078
startKey=''
endKey=''
location='108443.server.bigdata.com.cn:60020'
]
获取单个行的所有列,编码格式是 Base-64 encoded,需要再解码
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/table/row
eg:
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/hbase_yarnlog/application_1516606659120_0211
* About to connect() to 10.8.4.46 port 20550 (#0)
* Trying 10.8.4.46... connected
* Connected to 10.8.4.46 (10.8.4.46) port 20550 (#0)
> GET /hbase_yarnlog/application_1516606659120_0211 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.3.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: 10.8.4.46:20550
> Accept: text/xml
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Type: text/xml
Content-Type: text/xml
< Content-Length: 4645
Content-Length: 4645
<
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="YXBwbGljYXRpb25fMTUxNjYwNjY1OTEyMF8wMjEx"><Cell column="eWFybmxvZzpkdXJUaW1l" timestamp="1519717201909">NTMwMDA=</Cell><Cell column="eWFybmxvZzplcnJtc2c=" timestamp="1519717184359">PEVSUk9SPklORk86IFN0ZXAxX05vZGU4IGhGaWxlVG9IYmFzZSBUUkFDRTog5YWl5Y+CMD0iaGRmczovLzEwLjguNC43NDo4MDIwL3VzZXIvbHl5L2RhdGEvaGZpbGUiIFRSQUNFOiDlhaXlj4IxPUNvbmZpZ3VyYXRpb246IGNvcmUtZGVmYXVsdC54bWwsIGNvcmUtc2l0ZS54bWwsIHlhcm4tZGVmYXVsdC54bWwsIHlhcm4tc2l0ZS54bWwsIG1hcHJlZC1kZWZhdWx0LnhtbCwgbWFwcmVkLXNpdGUueG1sLCBoZGZzLWRlZmF1bHQueG1sLCBoZGZzLXNpdGUueG1sLCBoYmFzZS1kZWZhdWx0LnhtbCwgaGJhc2Utc2l0ZS54bWwgVFJBQ0U6IOWFpeWPgjI9ImhiYXNlX3Rlc3QiIElORk86IOmAu+i+kei/lOWbnuWAvD0xIElORk86IFN0ZXAxX05vZGUyIOato+W4uOe7k+adnyBJTkZPOiDnu5PmnZ/kuqTmmJMgPC9FUlJPUj4K</Cell><Cell column="eWFybmxvZzppZG1hcA==" timestamp="1519717194545">YXBwbGljYXRpb25fMTUxNjYwNjY1OTEyMF8wMjEyIA==</Cell><Cell column="eWFybmxvZzptYXhUaW1l" timestamp="1519717201909">MjAxOC0wMi0wOSAwOTo1Njo0Mw==</Cell><Cell column="eWFybmxvZzptaW5UaW1l" timestamp="1519717201909">MjAxOC0wMi0wOSAwOTo1NTo1MA==</Cell><Cell column="eWFybmxvZzpvb3ppZWFjdGlvbmlk" timestamp="1519717191278">MDAwMDAwOS0xODAyMDgxMjU0MjYyMjEtb296aWUtb296aS1XQHNwYXJr</Cell><Cell column="eWFybmxvZzpvb3ppZWpvYmlk" timestamp="1519717191278">MDAwMDAwOS0xODAyMDgxMjU0MjYyMjEtb296aWUtb296aS1X</Cell><Cell column="eWFybmxvZzpzcGFya3lhcm50YWdz" timestamp="1519717191278">b296aWUtY2Q4ZWE3MmE5YTdmNGFhOGVjMjhjMTRkMzRiNTdhYzA=</Cell><Cell column="eWFybmxvZzp0cmFkZWxvZw==" timestamp="1519717177817">SU5GTzogbG9nIHN0YXJ0OiBJTkZPOiDlvIDlp4vkuqTmmJMgIG9wSGJhc2U6b3BIYmFzZSBJTkZPOiBTdGVwMSBvcEhiYXNlIElORk86IFN0ZXAxX05vZGUxIOW8gOWniyBJTkZPOiBTdGVwMV9Ob2RlMyBTcGFya+WIneWni+WMliBUUkFDRTog5YWl5Y+CMD1fX1JFUV9fIERFQlVHOiDlvIDlp4vov57mjqVzcGFya+mbhue+pC4uLiAgREVCVUc6IEFwcE5hbWUgPSBudWxsIERFQlVHOiBzcGFya+mbhue+pOW3sui/nuaOpeWujOaIkCEgIElORk86IOmAu+i+kei/lOWbnuWAvD0xIFRSQUNFOiDlh7rlj4IwPW9yZy5hcGFjaGUuc3BhcmsuYXBpLmphdmEuSmF2YVNwYXJrQ29udGV4dEA3Y2E3OTU1MCBUUkFDRTog5Ye65Y+CMT1vcmcuYXBhY2hlLnNwYXJrLnNxbC5TcGFya1Nlc3Npb25AMjlmNGMzYzYgSU5GTzogU3RlcDFfTm9kZTQgaW5pdEhiYXNlIFRSQUNFOiDlhaXlj4IwPSIxMDg0NDcuc2VydmVyLmJpZ2RhdGEuY29tLmNuLDEwODQxOS5zZXJ2ZXIuYmlnZGF0YS5jb20uY24sMTA4NDE4LnNlcnZlci5iaWdkYXRhLmNvbS5jbiwxMDg0NDguc2VydmVyLmJpZ2RhdGEuY29tLmNuLDEwODQ3Ny5zZXJ2ZXIuYmlnZGF0YS5jb20uY24iIFRSQUNFOiDlhaXlj4IxPSIyMTgxIiBJTkZPOiDpgLvovpHov5Tlm57lgLw9MSBUUkFDRTog5Ye65Y+CMD1Db25maWd1cmF0aW9uOiBjb3JlLWRlZmF1bHQueG1sLCBjb3JlLXNpdGUueG1sLCB5YXJuLWRlZmF1bHQueG1sLCB5YXJuLXNpdGUueG1sLCBtYXByZWQtZGVmYXVsdC54bWwsIG1hcHJlZC1zaXRlLnhtbCwgaGRmcy1kZWZhdWx0LnhtbCwgaGRmcy1zaXRlLnhtbCwgaGJhc2UtZGVmYXVsdC54bWwsIGhiYXNlLXNpdGUueG1sIElORk86IFN0ZXAxX05vZGU1IHJlYWRIYmFzZSBUUkFDRTog5YWl5Y+CMD1vcmcuYXBhY2hlLnNwYXJrLmFwaS5qYXZhLkphdmFTcGFya0NvbnRleHRAN2NhNzk1NTAgVFJBQ0U6IOWFpeWPgjE9Q29uZmlndXJhdGlvbjogY29yZS1kZWZhdWx0LnhtbCwgY29yZS1zaXRlLnhtbCwgeWFybi1kZWZhdWx0LnhtbCwgeWFybi1zaXRlLnhtbCwgbWFwcmVkLWRlZmF1bHQueG1sLCBtYXByZWQtc2l0ZS54bWwsIGhkZnMtZGVmYXVsdC54bWwsIGhkZnMtc2l0ZS54bWwsIGhiYXNlLWRlZmF1bHQueG1sLCBoYmFzZS1zaXRlLnhtbCBUUkFDRTog5YWl5Y+CMj0iaGJhc2VfdGVzdCIgREVCVUc6IGhiYXNlIHRhYmxlIHJlY29yZHMgbnVtID0gNSBJTkZPOiDpgLvovpHov5Tlm57lgLw9MSBUUkFDRTog5Ye65Y+CMD1NYXBQYXJ0aXRpb25zUkREWzJdIGF0IG1hcCBhdCBQX1NwYXJrLmphdmE6NTc1IElORk86IFN0ZXAxX05vZGU3IGhmaWxlRm9ybWF0IElORk86IOmAu+i+kei/lOWbnuWAvD0xIFRSQUNFOiDlh7rlj4IwPXRjLnRlc3Qub3BIYmFzZS5vcEhiYXNlLkFfb3BIYmFzZSQxQDNjMTRjOGE4IElORk86IFN0ZXAxX05vZGU2IOeUn+aIkEhGaWxlIFRSQUNFOiDlhaXlj4IwPU1hcFBhcnRpdGlvbnNSRERbMl0gYXQgbWFwIGF0IFBfU3BhcmsuamF2YTo1NzUgVFJBQ0U6IOWFpeWPgjE9Q29uZmlndXJhdGlvbjogY29yZS1kZWZhdWx0LnhtbCwgY29yZS1zaXRlLnhtbCwgeWFybi1kZWZhdWx0LnhtbCwgeWFybi1zaXRlLnhtbCwgbWFwcmVkLWRlZmF1bHQueG1sLCBtYXByZWQtc2l0ZS54bWwsIGhkZnMtZGVmYXVsdC54bWwsIGhkZnMtc2l0ZS54bWwsIGhiYXNlLWRlZmF1bHQueG1sLCBoYmFzZS1zaXRlLnhtbCBUUkFDRTog5YWl5Y+CMj0iaGRmczovLzEwLjguNC43NDo4MDIwL3VzZXIvbHl5L2RhdGEvaGZpbGUiIFRSQUNFOiDlhaXlj4IzPXRjLnRlc3Qub3BIYmFzZS5vcEhiYXNlLkFfb3BIYmFzZSQxQDNjMTRjOGE4IElORk86IOmAu+i+kei/lOWbnuWAvD0xIDxFUlJPUj5JTkZPOiBTdGVwMV9Ob2RlOCBoRmlsZVRvSGJhc2UgVFJBQ0U6IOWFpeWPgjA9ImhkZnM6Ly8xMC44LjQuNzQ6ODAyMC* Connection #0 to host 10.8.4.46 left intact
* Closing connection #0
91c2VyL2x5eS9kYXRhL2hmaWxlIiBUUkFDRTog5YWl5Y+CMT1Db25maWd1cmF0aW9uOiBjb3JlLWRlZmF1bHQueG1sLCBjb3JlLXNpdGUueG1sLCB5YXJuLWRlZmF1bHQueG1sLCB5YXJuLXNpdGUueG1sLCBtYXByZWQtZGVmYXVsdC54bWwsIG1hcHJlZC1zaXRlLnhtbCwgaGRmcy1kZWZhdWx0LnhtbCwgaGRmcy1zaXRlLnhtbCwgaGJhc2UtZGVmYXVsdC54bWwsIGhiYXNlLXNpdGUueG1sIFRSQUNFOiDlhaXlj4IyPSJoYmFzZV90ZXN0IiBJTkZPOiDpgLvovpHov5Tlm57lgLw9MSBJTkZPOiBTdGVwMV9Ob2RlMiDmraPluLjnu5PmnZ8gSU5GTzog57uT5p2f5Lqk5piTIDwvRVJST1I+b3BIYmFzZSBJTkZPOiDohJrmnKzmiafooYzml7bpl7TvvJoxMDQ3NOavq+enkiBJTkZPOiBsb2cgZW5kOgo=</Cell></Row></CellSet>
获取单个列某个时间戳下的值。 值为Base-64编码。
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/hbase_yarnlog/application_1516606659120_0211/yarnlog:errmsg/1519717201909
* About to connect() to 10.8.4.46 port 20550 (#0)
* Trying 10.8.4.46... connected
* Connected to 10.8.4.46 (10.8.4.46) port 20550 (#0)
> GET /hbase_yarnlog/application_1516606659120_0211/yarnlog:errmsg/1519717201909 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.3.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: 10.8.4.46:20550
> Accept: text/xml
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Type: text/xml
Content-Type: text/xml
< Content-Length: 745
Content-Length: 745
<
* Connection #0 to host 10.8.4.46 left intact
* Closing connection #0
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="YXBwbGljYXRpb25fMTUxNjYwNjY1OTEyMF8wMjEx"><Cell column="eWFybmxvZzplcnJtc2c=" timestamp="1519717184359">PEVSUk9SPklORk86IFN0ZXAxX05vZGU4IGhGaWxlVG9IYmFzZSBUUkFDRTog5YWl5Y+CMD0iaGRmczovLzEwLjguNC43NDo4MDIwL3VzZXIvbHl5L2RhdGEvaGZpbGUiIFRSQUNFOiDlhaXlj4IxPUNvbmZpZ3VyYXRpb246IGNvcmUtZGVmYXVsdC54bWwsIGNvcmUtc2l0ZS54bWwsIHlhcm4tZGVmYXVsdC54bWwsIHlhcm4tc2l0ZS54bWwsIG1hcHJlZC1kZWZhdWx0LnhtbCwgbWFwcmVkLXNpdGUueG1sLCBoZGZzLWRlZmF1bHQueG1sLCBoZGZzLXNpdGUueG1sLCBoYmFzZS1kZWZhdWx0LnhtbCwgaGJhc2Utc2l0ZS54bWwgVFJBQ0U6IOWFpeWPgjI9ImhiYXNlX3Rlc3QiIElORk86IOmAu+i+kei/lOWbnuWAvD0xIElORk86IFN0ZXAxX05vZGUyIOato+W4uOe7k+adnyBJTkZPOiDnu5PmnZ/kuqTmmJMgPC9FUlJPUj4K</Cell></Row></CellSet>
获取单个列的值。 值为Base-64编码。
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/hbase_yarnlog/application_1516606659120_0211/yarnlog:errmsg
* About to connect() to 10.8.4.46 port 20550 (#0)
* Trying 10.8.4.46... connected
* Connected to 10.8.4.46 (10.8.4.46) port 20550 (#0)
> GET /hbase_yarnlog/application_1516606659120_0211/yarnlog:errmsg HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.3.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: 10.8.4.46:20550
> Accept: text/xml
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Type: text/xml
Content-Type: text/xml
< Content-Length: 745
Content-Length: 745
<
* Connection #0 to host 10.8.4.46 left intact
* Closing connection #0
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="YXBwbGljYXRpb25fMTUxNjYwNjY1OTEyMF8wMjEx"><Cell column="eWFybmxvZzplcnJtc2c=" timestamp="1519717184359">PEVSUk9SPklORk86IFN0ZXAxX05vZGU4IGhGaWxlVG9IYmFzZSBUUkFDRTog5YWl5Y+CMD0iaGRmczovLzEwLjguNC43NDo4MDIwL3VzZXIvbHl5L2RhdGEvaGZpbGUiIFRSQUNFOiDlhaXlj4IxPUNvbmZpZ3VyYXRpb246IGNvcmUtZGVmYXVsdC54bWwsIGNvcmUtc2l0ZS54bWwsIHlhcm4tZGVmYXVsdC54bWwsIHlhcm4tc2l0ZS54bWwsIG1hcHJlZC1kZWZhdWx0LnhtbCwgbWFwcmVkLXNpdGUueG1sLCBoZGZzLWRlZmF1bHQueG1sLCBoZGZzLXNpdGUueG1sLCBoYmFzZS1kZWZhdWx0LnhtbCwgaGJhc2Utc2l0ZS54bWwgVFJBQ0U6IOWFpeWPgjI9ImhiYXNlX3Rlc3QiIElORk86IOmAu+i+kei/lOWbnuWAvD0xIElORk86IFN0ZXAxX05vZGUyIOato+W4uOe7k+adnyBJTkZPOiDnu5PmnZ/kuqTmmJMgPC9FUlJPUj4K</Cell></Row></CellSet>
创建scanner 扫描对象,batch="100"即每批次扫描100行,值为Base-64编码
curl -vi -X PUT -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<Scanner batch="100"/>' http://10.8.4.46:20550/hbase_yarnlog/scanner/
* About to connect() to 10.8.4.46 port 20550 (#0)
* Trying 10.8.4.46... connected
* Connected to 10.8.4.46 (10.8.4.46) port 20550 (#0)
> PUT /hbase_yarnlog/scanner/ HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.3.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: 10.8.4.46:20550
> Accept: text/xml
> Content-Type: text/xml
> Content-Length: 22
>
< HTTP/1.1 201 Created
HTTP/1.1 201 Created
< Location: http://10.8.4.46:20550/hbase_yarnlog/scanner/1520413092046101ffa12
Location: http://10.8.4.46:20550/hbase_yarnlog/scanner/1520413092046101ffa12
< Content-Length: 0
Content-Length: 0
<
* Connection #0 to host 10.8.4.46 left intact
* Closing connection #0
curl -vi -X GET -H "Accept: text/xml" http://10.8.4.46:20550/hbase_yarnlog/scanner/1520413092046101ffa12
* About to connect() to 10.8.4.46 port 20550 (#0)
* Trying 10.8.4.46... connected
* Connected to 10.8.4.46 (10.8.4.46) port 20550 (#0)
> GET /hbase_yarnlog/scanner/1520413092046101ffa12 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.3.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: 10.8.4.46:20550
> Accept: text/xml
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Cache-Control: no-cache
Cache-Control: no-cache
< Content-Type: text/xml
Content-Type: text/xml
< Content-Length: 17834
Content-Length: 17834
<
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="YXBwbGljYXRpb25fMTUxNjYwNjY1OTEyMF8wMjEx"><Cell column="eWFybmxvZzpkdXJUaW1l" timestamp="1519717201909">NTMwMDA=</Cell><Cell column="eWFybmxvZzplcnJtc2c=" timestamp="1519717184359">PEVSUk9SPklORk86IFN0ZXAxX05vZGU4IGhGaWxlVG9IYmFzZSBUUkFDRTog5YWl5Y+CMD0iaGRmczovLzEwLjguNC43NDo4MDIwL3VzZXIvbHl5L2RhdGEvaGZpbGUiIFRSQUNFOiDlhaXlj4IxPUNvbmZpZ3VyYXRpb246IGNvcmUtZGVmYXVsdC54bWwsIGNvcmUtc2l0ZS54bWwsIHlhcm4tZGVmYXVsdC54bWwsIHlhcm4tc2l0ZS54bWwsIG1hcHJlZC1kZWZhdWx0LnhtbCwgbWFwcmVkLXNpdGUueG1sLCBoZGZzLWRlZmF1bHQueG1sLCBoZGZzLXNpdGUueG1sLCBoYmFzZS1kZWZhdWx0LnhtbCwgaGJhc2Utc2l0ZS54bWwgVFJBQ0U6IOWFpeWPgjI9ImhiYXNlX3Rlc3QiIElORk86IOmAu+i+kei/lOWbnuWAvD0xIElORk86IFN0ZXAxX05vZGUyIOato+W4uOe7k+adnyBJTkZPOiDnu5PmnZ/kuqTmmJMgPC9FUlJPUj4K</Cell><Cell column="eWFybmxvZzppZG1hcA==" timestamp="1519717194545">YXBwbGljYXRpb25fMTUxNjYwNjY1OTEyMF8wMjEyIA==
删除scanner 扫描对象,释放资源
curl -vi -X DELETE -H "Accept: text/xml" http://10.8.4.46:20550/hbase_yarnlog/scanner/1520413092046101ffa12
* About to connect() to 10.8.4.46 port 20550 (#0)
* Trying 10.8.4.46... connected
* Connected to 10.8.4.46 (10.8.4.46) port 20550 (#0)
> DELETE /hbase_yarnlog/scanner/1520413092046101ffa12 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.3.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: 10.8.4.46:20550
> Accept: text/xml
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Length: 0
Content-Length: 0
<
* Connection #0 to host 10.8.4.46 left intact
* Closing connection #0
Hbase restFul API的更多相关文章
- Hbase RESTFul API创建namespace返回500
1.使用官方提供的/namespaces/namespace创建namespace失败,返回500,官方提供示例:/namespaces/namespace POST 创建一个新的namespace. ...
- (转载) RESTful API 设计指南
作者: 阮一峰 日期: 2014年5月22日 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制 ...
- Node.js实现RESTful api,express or koa?
文章导读: 一.what's RESTful API 二.Express RESTful API 三.KOA RESTful API 四.express还是koa? 五.参考资料 一.what's R ...
- Restful Api 最佳实践
Web APIs has become an very important topic in the last year. We at M-Way Solutions are working ever ...
- 基于轻量型Web服务器Raspkate的RESTful API的实现
在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RESTful API. 模块 首先让我们了解一下"模块&quo ...
- RESTful Api 身份认证安全性设计
REST是一种软件架构风格.RESTful Api 是基于 HTTP 协议的 Api,是无状态传输.它的核心是将所有的 Api 都理解为一个网络资源.将所有的客户端和服务器的状态转移(动作)封装到 H ...
- 深入理解 RESTful Api 架构
转自https://mengkang.net/620.html 一些常见的误解 不要以为 RESTful Api 就是设计得像便于 SEO 的伪静态,例如一个 Api 的 URL 类似于 http: ...
- 使用Flask设计带认证token的RESTful API接口[翻译]
上一篇文章, 使用python的Flask实现一个RESTful API服务器端 简单地演示了Flask实的现的api服务器,里面提到了因为无状态的原则,没有session cookies,如果访问 ...
- RESTful API 设计指南
转自:http://www.ruanyifeng.com/blog/2014/05/restful_api.html 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机. ...
随机推荐
- PCB测试点的设计要求
测试点的设计要求:1.定位孔采用非金属化的定位孔 ,误差小于0.05mm.定位孔周围3mm不能有元件.2.测试点直径不小于0.8mm,测试点之间的间距不小于1.27mm,测试点离元件不小于1.27mm ...
- iis服务器php环境 failed to open stream: No such file or directory解决办法
项目主机用的windows系统,iis服务器:远程连接桌面—>本地资源->映射D盘驱动器,将本地d盘修改后的文件放在远程主机项目目录里,访问报出failed to open stream: ...
- Java Bean与Map之间相互转化的实现
目录树 概述 Apache BeanUtils将Bean转Map Apache BeanUtils将Map转Bean 理解BeanUtils将Bean转Map的实现之手写Bean转Map 概述 Apa ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 042-43
记录刷题情况 ------------------------------------------------L1-042--------------------------------------- ...
- 常用EL函数汇总 fn:contains ,fn:substring,fn:substringAfter...
由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用.这些EL函数在JSTL开发包中进行描述,因此在JSP页面中使用SUN公司的E ...
- 利用ascii码生成26个英文字母
<script> let a = ""; for (var i = 65; i < 91; i++) { a += String.fromCharCode(i); ...
- Python支付接口汇总大全(包含微信、支付宝等)
微信接口 wzhifuSDK- 由微信支付SDK 官方PHP Demo移植而来,v3.37下载地址 weixin_pay- 是一个简单的微信支付的接口 weixin_pay- 微信支付接口(V3.3. ...
- Java开发小技巧(五):HttpClient工具类
前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...
- python3 package management 包管理 实例
包是一种组织管理代码的方式,包里面存放的是模块 用于将模块包含在一起的文件夹就是包 包内包含__init__.py标志性文件 定义一个学生类,一个sayhello函数,一个打印语句 # p01.py ...
- Python 爬虫 (二)
cookiejar模块: 管理储存cookie,将传出的http请求添加cookie cookie存储在内存中,CookieJar示例回收后cookie将自动消失 实例:用cookjar访问人人网主页 ...