我在路由上使用了内置的
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
答案 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