亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法使用 Python 發布到 Flask Restful 端點

無法使用 Python 發布到 Flask Restful 端點

慕神8447489 2023-09-12 19:54:06
我有一個接受 JSON 的端點api.add_resource(EventsList, '/events')Flask Restful / SQL Alchemy 是:class EventsList (Resource):    #RETURNS ALL EVENTS    def get(self):        schema = EventSchema()        result = db.session.query(EventModel).all()        return schema.dump(result, many=True), 200    #POSTS A SINGLE EVENT    def post(self):        title = request.json['title']        date = request.json['date']        event = EventModel(title=title,date=date)        db.session.add(event)        db.session.commit()        data = ({'title': event.title,                 'date': event.date})        response = jsonify(data)        response.status_code = 200        return response當通過命令行使用curl時,這絕對可以正常工作:卷曲請求curl http://localhost:5002/events -H "Content-Type: application/json" -d '{"title": "TEst Event 3", "date":"2020-02-23"}'卷曲響應響應包含預期的數據:{"date":"Sun, 23 Feb 2020 00:00:00 GMT","title":"TEst Event 3"}這一切都很好。但是,當我嘗試從 Python 執行此操作時,我收到服務器錯誤。Pythonimport importlibimport subprocessimport csvimport sysimport requeststargetWikiPage = input("Target Wiki Page: ")eventTitle = input("Event Title: ")eventDate = input("Event Date: ")    #POST AN EVENTdata = '{"title": "'+eventTitle+'","date":"'+eventDate+'"}'print("SENDING EVENT DATA:")print(requests.body)print(requests.headers)response = requests.post("http://localhost:5002/events", json=data)任何幫助表示贊賞。
查看完整描述

2 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

修復了這個問題。


問題在于我如何將數據發送到服務器。這就是我所擁有的:


targetWikiPage = input("Target Wiki Page: ")

eventTitle = input("Event Title: ")

eventDate = input("Event Date: ")


    

#POST AN EVENT

data = '{"title": "'+eventTitle+'","date":"'+eventDate+'"}'

print("SENDING EVENT DATA:")

print(requests.body)

print(requests.headers)


response = requests.post("http://localhost:5002/events", json=data)

請注意,我的requests.post有兩個值被傳遞。網址和數據。

問題如下:

  1. 數據格式不正確。這應該是:

data = json.dumps({"title": eventTitle, "date": eventDate})

  1. 我需要添加標題:

headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}

  1. 我需要將一個data值傳遞給服務器,而不是json

requests.post("http://localhost:5002/events", headers=headers, data=data)

這將我的文件更改為:

targetWikiPage = input("Target Wiki Page: ")

eventTitle = input("Event Title: ")

eventDate = input("Event Date: ")


#POST AN EVENT

data = json.dumps({"title": eventTitle, "date": eventDate})

headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}

print(data)

print(headers)

print("SENDING EVENT DATA:")


response = requests.post("http://localhost:5002/events", headers=headers, data=data)

json=json.loads(response.content)


查看完整回答
反對 回復 2023-09-12
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

您在字符串對象中有 JSON 數據。嘗試通過字符串的鍵從字符串中提取值將產生您所描述的錯誤


>>> response = '{"date":"Sun, 23 Feb 2020 00:00:00 GMT","title":"TEst Event 3"}'

>>> response_date = response["date"]

Traceback (most recent call last):

  File "<pyshell#1>", line 1, in <module>

    response_date = response["date"]

TypeError: string indices must be integers

您需要先將字符串轉換為a dict,然后提取值


>>> import json

>>> response_as_json = json.loads(response)

>>> response_date = response_as_json["date"]

>>> response_date

'Sun, 23 Feb 2020 00:00:00 GMT'


查看完整回答
反對 回復 2023-09-12
  • 2 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號