如何更新API资源Laravel?

时间:2018-08-28 04:58:45

标签: laravel request postman crud api-design

enter image description here我在路由上使用了内置的import json import urllib3 urllib3.disable_warnings() url = 'https://www.reddit.com/r/EarthPorn/top/.json' http = urllib3.PoolManager() suffix = ['.jpg','.png','.gif','.bmp'] while True: response = http.request('GET',url) myData = response.data parsedJson = json.loads(myData) finalUrl = parsedjson[0]['data']['children'][0]['data']['url'] print(finalUrl) 方法,以使特定的控制器生成标准的CRUD路由,但是我不知道如何更新资源。我试图创建一个API,所以我使用的是resource,而不仅仅是模型。这是我的控制器中尝试更新的代码,但是它不起作用:

App\Http\Resources

我正在使用邮递员检查路线,并且正在尝试向原始app.dev/api/samples/1发送带有更新后的JSON的public function update(Request $request, Sample $sample) { $sample = Sample::where('id', $request->id)->update($request->all()); } 请求,但是将put请求发送给相同的网址,我可以看到值没有改变。 如何使此更新有效?

编辑:这是我的api.php路由文件

get

4 个答案:

答案 0 :(得分:0)

您可以编写此内容。希望这能解决您的问题,

public function update(Request $request, Sample $sample)
{
    $sample = $sample->update($request->all());   
}

答案 1 :(得分:0)

如果这是标准的Laravel资源路由/控制器,并且您的端点是api/samples/1 那么您的PATCH / PUT更新方法应如下所示:

public function update(Request $request, $id)
{
    $sample = Sample::find($id);
    $sample->update($request->all());
}

如果您的身体是JSON,则可能需要:

$sample->update($request->json()->all());

答案 2 :(得分:0)

您需要在模型中将列定义为可填充,以便以后进行更新。您需要做的就是在示例模型中添加以下行。

protected $fillable = [ 'name', 'content'];

如果仍然无法解决问题,请随时询问。

答案 3 :(得分:0)

在邮递员的标头中尝试这样输入,我使用x-www-form-urlencoded:

Key                  Value                            Description
Accept          application/json
Content-Type    application/x-www-form-urlencoded

在邮递员的体内尝试使用x-www-form-urlencoded

key         value
name        update
content     new content