【问题标题】:Bottle post not returning response瓶贴不返回响应
【发布时间】:2020-03-25 02:14:11
【问题描述】:

我使用 Bottle 作为后端,使用 Angular2 作为前端。使用 POST 请求时,我想返回响应,但由于某种原因,它没有返回响应

Python 代码:

@app.post("/api/post/new_post")
def hp_new_post():
    pd = json.loads(request.body.read().decode("utf-8"))
    try:
        cl.eduo.posts.insert_one(
            {
                "h": pd['h'],
                "d": pd['d'],
                "t": pd['t']
            }
        )
    except Exception:
        response.status = 500
    response.content_type = 'application/json'
    response.status = 200
    return response

角度代码:

var result = from(
  fetch(
    this.baseurl,
    {
      body: JSON.stringify(
        {
          "h": h,
          "d": des,
          "t": Date.now()
        }),
      headers: {
        'Content-Type': 'application/json',
      },
      method: 'POST',
      mode: 'no-cors'
    }
  )
).subscribe(
  {
    next(data) {
      console.log(data);
    },
    error(msg) {
      console.log(msg);
    }
  }
)

当我从一个请求中获得 console.log 数据时:

body: null
bodyUsed: false
headers: Headers {  }   
ok: false    ​
redirected: false    ​
status: 0    ​
statusText: ""    ​
type: "opaque"    ​
url: ""

【问题讨论】:

  • 看起来这更像是在服务器(python)端而不是角度。您是否尝试过在您的 python 应用程序中配置 cors?阅读这些答案可能会有所帮助:stackoverflow.com/questions/36292537/…

标签: python-3.x angular rxjs bottle


【解决方案1】:

我建议您使用HttpClient。为此,导入HttpClientModule,您的代码可能是:

constructor(private httpClient: HttpClient) {}

load() {
  this.http.post(this.baseurl, {
    "h": h,
    "d": des,
    "t": Date.now()
  }, { 
    observe: 'response',
    headers: new HttpHeaders({
      'Content-Type': 'application/json'
    }
  }).subscribe(response => {

    // do stuff with body
    // response.body

    // this will output headers received
    const keys = response.headers.keys();
    const headers = keys.map(key =>
    `${key}: ${response.headers.get(key)}`);

     console.table(headers);
  })
}

如果您不需要response 的详细信息,而只收到body

this.http.post<MyData>(this.baseurl, {
  "h": h,
  "d": des,
  "t": Date.now()
}).subscribe(data => {
  // do stuff with data of type MyData
  data.name...
}); 

更多详情请关注Angular official docs

【讨论】:

    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2019-11-07
    相关资源
    最近更新 更多