HTTP Method(四) GET

今天聊的是HTTP Get 方法中是否可以通過body 傳值的問題:

一個問題:
定義了一個 http get 方法,能否在 request body 中添加請求參數(shù)?

下面的測試會表明,是可以在 get 方法中添加請求參數(shù)的。

“遺憾”的是,一些“工具”會做一些約束,從而讓你很難觸及 http 的精髓和本質(zhì)...

一個代碼片段 Django


class Login(BaseView):
    """Login.
    """

    def get(self, request, format=None):

        try:
            res = {}
            code = ErrorCode.SUCCESS
            # TODO: refactor loads later
            receive = json.loads(request.body)
            username = receive.get('username', '')
            password = receive.get('password', '')
            logging.info("[USER] Login, args: %s.", receive)
        except Exception as e:
            code = ErrorCode.ILLEGAL_DATA_FORMAT
            logging.exception(
                "[USER] Illegal data, Exception: %s", e.args)
            return self.write_res(code)
      ... 

image.png
$ curl -i -X GET  -d '{"name":"jia", "start_time":11}' http://172.28.20.124:7777/cmdb/openapi/login/

HTTP/1.1 200 OK
Content-Length: 66
Vary: Accept, Cookie
Server: TornadoServer/4.5.1
Allow: GET, HEAD, OPTIONS
X-Frame-Options: SAMEORIGIN
Content-Type: application/json

{"msg": "\u7528\u6237\u4e0d\u5b58\u5728", "code": 206, "data": {}}

# NOTE:  output 
[I 171226 21:53:20 open_views:34] [USER] Login, args: {u'start_time': 11, u'name': u'jia'}.
2017-12-26 21:53:20 root open_views.py [INFO] [USER] Login, args: {u'start_time': 11, u'name': u'jia'}.
[I 171226 21:53:20 wsgi:355] 200 GET /cmdb/openapi/login/ (172.28.32.49) 3409.83ms
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容