標籤:post請求 code pes post json 發送 查詢 color 寫入
簡單樣本:
import request from ‘superagent‘;//引用聲明request.post(api) .withCredentials()//跨域 .end((err, res) => { if (res.ok) { const json = JSON.parse(res.text); } else { console.log(‘擷取失敗‘); } });
1、get 方式
當使用get
請求傳遞查詢字串的時候,用.query()
方法,傳遞一個對象就可以,下面的代碼將產生一個/search?query=Manny&range=1..5&order=desc
請求:
request .get(‘/search‘) .query({ query: ‘Manny‘ }) .query({ range: ‘1..5‘ }) .query({ order: ‘desc‘ }) .end(function(res){ });
或者傳一個單獨的大對象:
request .get(‘/search‘) .query({ query: ‘Manny‘, range: ‘1..5‘, order: ‘desc‘ }) .end(function(res){ });
.query()
方法也允許傳遞字串:
request .get(‘/querystring‘) .query(‘search=Manny&range=1..5‘) .end(function(res){ });
或者字串拼接:
request .get(‘/querystring‘) .query(‘search=Manny‘) .query(‘range=1..5‘) .end(function(res){ });
2、post 請求
一個典型的json post請求看起來就像下面的那樣,設定一個合適的Content-type
頭欄位,然後寫入一些資料,在這個例子裡只是json字串:
request.post(‘/user‘) .set(‘Content-Type‘, ‘application/json‘) .send(‘{"name":"tj","pet":"tobi"}‘) .end(callback)
因為json非常通用,所以就作為預設的Content-type
,下面的例子跟上面的一樣:
request.post(‘/user‘) .send({ name: ‘tj‘, pet: ‘tobi‘ }) .end(callback)
或者調用多次.send()
方法:
request.post(‘/user‘) .send({ name: ‘tj‘ }) .send({ pet: ‘tobi‘ }) .end(callback)
預設發送字串,將設定Content-type
為application/x-www-form-urlencoded
,多次調用將會通過&
來串連,這裡的結果為name=tj&pet=tobi
:
request.post(‘/user‘) .send(‘name=tj‘) .send(‘pet=tobi‘) .end(callback);
superagent的請求資料格式化是可以擴充的,不過預設支援form
和json
兩種格式,想發送資料以application/x-www-form-urlencoded
類型的話,則可以簡單的調用.type()
方法傳遞form
參數就行,這裡預設是json
,下面的請求將會postname=tj&pet=tobi
內容:
request.post(‘/user‘) .type(‘form‘) .send({ name: ‘tj‘ }) .send({ pet: ‘tobi‘ }) .end(callback)
3、設定content-type
常見的方案是使用.set()
方法:
request.post(‘/user‘) .set(‘Content-Type‘, ‘application/json‘)
一個簡便的方法是調用.type()
方法,傳遞一個規範的MIME
名稱,包括type/subtype
,或者一個簡單的尾碼就像xml
,json
,png
這樣,例如:
request.post(‘/user‘) .type(‘application/json‘) request.post(‘/user‘) .type(‘json‘) request.post(‘/user‘) .type(‘png‘)
4、設定接受類型
跟.type()
簡便方法一樣,這裡也可以調用.accept()
方法來設定接受類型,這個值將會被request.types
所引用,支援傳遞一個規範的MIME
名稱,包括type/subtype
,或者一個簡單的尾碼就像xml
,json
,png
這樣,例如:
request.get(‘/user‘) .accept(‘application/json‘) request.get(‘/user‘) .accept(‘json‘) request.get(‘/user‘) .accept(‘png‘)
5、跨域
.withCredentials()
方法可以啟用發送原始cookie的能力,不過只有在Access-Control-Allow-Origin
不是一個萬用字元(*),並且Access-Control-Allow-Credentials
為’true’的情況下才行.
request .get(‘http://localhost:4001/‘) .withCredentials() .end(function(res){ assert(200 == res.status); assert(‘tobi‘ == res.text); next(); })
可用於nodejs的SuperAgent(ajax API)