URL ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์๋ฅผ ์ดํดํ์ง ๋ชปํ๋ ๋ ๊ฑฐ์ ํ๋ซํผ์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
๋ค์ ๋งค๊ฐ ๋ณ์๊ฐ ์์ต๋๋ค.
params = {'fiz': 'foo:bar', 'biz': 'barfoo'}
์์ฒญ์ ์ํด ์์ฑ๋ URL
http://localhost/?fiz=foo%3Abar&biz=barfoo
๋ ๊ฑฐ์ ํ๋ซํผ์ ํ์ํ URL
http://localhost/?fiz=foo:bar&biz=barfoo
์ฌ์ฉ์ ์ง์ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ๋ง๋ค๊ณ URL์ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ์ง๋ง ์์ฒญ์ด ์ด ์ฟผ๋ฆฌ๋ฅผ ๋์ฝ๋ฉํ๊ณ ๋ค์ ์ธ์ฝ๋ฉํฉ๋๋ค.
improt urllib
qry = urllib.urlencode(params).replace('%3A', ':')
requests.get(url+'?'+qry) #: requests encodes the colon back to %3A
์ง์ urllib2๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋งํผ ์ฅํฉํด ๋ณด์ด์ง ์๋ ๋น ๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
API์ ์ฐ๊ฒฐ๋ "์์ ํ" ๋๋ "๊ต์ฒด" ๋ชฉ๋ก์ ์ป์ ์ ์์ต๋๊น? ์ด๊ฒ์ python 2.7์ด ํ์ํ๋ฏ๋ก ์์ฒญ ๊ณ์ธต์์ ์ํํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ Requests์์ ํ๊ธฐ ์ฝ๊ฐ ์ด์ํฉ๋๋ค. ๋ด๊ฐ ๋ณผ ๋ ๋ ๊ฐ์ง ์ต์
์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ Request
๊ฐ์ฒด๋ฅผ ์ง์ ์ค๋นํ๋ ๊ฒ์
๋๋ค.
import requests
import urllib
url = 'http://test.com/'
qry = urllib.urlencode(params).replace('%3A', ':')
s = requests.Session()
req = requests.Request(method='GET', url=url)
prep = req.prepare()
prep.url = url + qry
r = s.send(prep)
๋ค๋ฅธ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ด URL์ ์ ์กํ๊ธฐ ์ ์ ๋ณ๊ฒฝํ๋ ์ ์ก ์ด๋ํฐ๋ฅผ ๋น๋ํ๋ ๊ฒ์ ๋๋ค.
import requests
import urllib
class MutatingAdapter(requests.adapters.HTTPAdapter):
def send(self, request, **kwargs):
main, querystr = request.url.split('?') # Nasty hack, not always valid.
querystr = urllib.unquote(querystr)
querystr = urllib.quote(querystr, '/&:=')
request.url = '?'.join([main, querystr])
super(MutatingAdapter, self).send(request, **kwargs)
์ฒซ ๋ฒ์งธ ์ต์ ์ ๊ถ์ฅํฉ๋๋ค.
requests.post() ๋ฐ requests.get() http://stackoverflow.com/a/26344315/1056345 ์ json ๋งค๊ฐ๋ณ์๋ฅผ ์๋ํ ์ ์์ต๋๋ค
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ Requests์์ ํ๊ธฐ ์ฝ๊ฐ ์ด์ํฉ๋๋ค. ๋ด๊ฐ ๋ณผ ๋ ๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋
Request
๊ฐ์ฒด๋ฅผ ์ง์ ์ค๋นํ๋ ๊ฒ์ ๋๋ค.๋ค๋ฅธ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ด URL์ ์ ์กํ๊ธฐ ์ ์ ๋ณ๊ฒฝํ๋ ์ ์ก ์ด๋ํฐ๋ฅผ ๋น๋ํ๋ ๊ฒ์ ๋๋ค.