簡體   English   中英

Laravel Post 請求空請求參數

[英]Laravel Post Request empty Request parameters

當我使用郵遞員或我的應用程序發布到我的 API 端點時, request參數是一個空數組。

使用其他控制器發布請求工作正常並且request參數得到很好的處理。 只有使用我的訂單控制器,我的帖子正文才不會得到處理。

我沒有進行任何更改,恢復到較舊的提交也無濟於事。

我現在不知道為什么它不接受 JSON 正文。

控制器

public function createOrder(Request $request)
{
    return $request->product_id;
}

POST 正文| 原始 JSON

{
    "product_id": 4
}

響應響應是一個空數組 []"

我試圖打印$request並且我得到了這個作為響應

POST /api/order/post HTTP/1.1
Accept:          application/json
Accept-Encoding: gzip, deflate, br
Authorization:   Bearer.{token}
Cache-Control:   no-cache
Connection:      keep-alive
Content-Length:  20
Content-Type:    
Cookie:          XSRF-TOKEN={Token}%3D%3D; laravel_session=%3D%3D
Host:            backend.host
User-Agent:      PostmanRuntime/7.22.0
Cookie: XSRF-TOKEN==={token}; laravel_session={Token}

{
    "product_id": 4
}

我的帖子正文是可見的,所以我很困惑為什么它沒有顯示

我的期望和我得到的

我希望請求返回我的 JSON 正文的值

發生了什么 沒有返回

注意:我最近添加了通行證,但上次在添加laravel后使用此端點時效果laravel

工作控制器

public function store(Request $request)
{
    return $request;
}

Api 路由

Route::post('order/create', 'OrderController@createOrder');
Route::post('product/create', 'ProductController@store');

如果我在控制器中echo $request我看到echo $request中有數據,但我認為這種格式不好:

POST /api/messages HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Authorization: Bearer 5|ibun75O2SNnZoT2W5Rk0KQox70wBxKN4xIIrq0sQ
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 522
Content-Type: application/json
Host: localhost:8000
User-Agent: PostmanRuntime/7.26.10

{
    "text" : "Molestiae dolor non eaque aut sapiente maiores. Aut voluptates nesciunt. Cum distinctio quisquam qui vitae eos
asperiores.

Nihil iste quia. Voluptate deleniti ipsam voluptas alias similique doloremque. Ratione alias iste voluptatem quis. Quis
quia quo sequi minus quod voluptate cum similique dolor.

Maxime enim aut. Eius ea doloribus. Quaerat dolor libero ipsum. Delectus atque esse ipsam est.",
    "imageLink" : "http://placeimg.com/640/480/abstract",
    "typeID" : "232",
    "answerTypeID" : "919"
}

添加Content-Type:application/json使 PHP 知道它正在接收 JSON。 目前,您的Content-type看起來是空的。 還要確保您傳遞的 CSRF 令牌是正確的。

檢查您的請求是否具有:

  1. 添加帶有值application/json的標題Accept
  2. 如果 body 是raw ,請確保類型是JSON
  3. 如果 body 是raw ,請確保內容是有效的 JSON 並且不要在 JSON 中包含注釋

例如:

這有效: JSON 類型的原始主體:

{
    "email": "{{email}}",
    "password": "{{password}}"
}

這不起作用:即使是 JSON 類型的原始正文:

{
    "email": "{{email}}", // Eg. superadmin@example.com <-- This invalidates the JSON
    "password": "{{password}}" // Eg. password <-- This invalidates the JSON
}

請注意,在 Postman 中,JSON 注釋在視覺/語法上呈現為 JSON 的有效部分,但實際上是無效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM