如何解决如何在RESTful服务中通过POST请求添加订单?
我正在尝试为具有JWT身份验证的客户面板添加订单。 我激活了授权,在Postman的正文中添加了参数并发送了它,但是“ status”:422,“ errors”:“ Order no valid”}它给出了此消息,并且dev.log文件在下面。
[2020-08-24T10:31:01.791369+02:00] request.INFO: Matched route "order_apiorders_add". {"route":"order_apiorders_add","route_parameters":{"_route":"order_apiorders_add","_controller":"App\\Controller\\OrderController::addOrder"},"request_uri":"http://localhost:8000/api/orders","method":"POST"} []
[2020-08-24T10:31:01.823528+02:00] security.DEBUG: Checking for guard authentication credentials. {"firewall_key":"api","authenticators":1} []
[2020-08-24T10:31:01.823621+02:00] security.DEBUG: Checking support on guard authenticator. {"firewall_key":"api","authenticator":"Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\Guard\\JWTTokenAuthenticator"} []
[2020-08-24T10:31:01.823697+02:00] security.DEBUG: Calling getCredentials() on guard authenticator. {"firewall_key":"api","authenticator":"Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\Guard\\JWTTokenAuthenticator"} []
[2020-08-24T10:31:01.836138+02:00] security.DEBUG: Passing guard token information to the GuardAuthenticationProvider {"firewall_key":"api","authenticator":"Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\Guard\\JWTTokenAuthenticator"} []
[2020-08-24T10:31:01.937527+02:00] doctrine.DEBUG: SELECT t0.id AS id_1,t0.username AS username_2,t0.password AS password_3 FROM user t0 WHERE t0.username = ? LIMIT 1 ["admin"] []
[2020-08-24T10:31:01.949440+02:00] security.INFO: Guard authentication successful! {"token":{"Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\Authentication\\Token\\JWTUserToken":"JWTUserToken(user=\"admin\",authenticated=true,roles=\"ROLE_USER\")"},"authenticator":"Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\Guard\\JWTTokenAuthenticator"} []
[2020-08-24T10:31:01.950400+02:00] security.DEBUG: Guard authenticator set no success response: request continues. {"authenticator":"Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\Guard\\JWTTokenAuthenticator"} []
[2020-08-24T10:31:01.950461+02:00] security.DEBUG: Remember me skipped: it is not configured for the firewall. {"authenticator":"Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\Guard\\JWTTokenAuthenticator"} []
[2020-08-24T10:31:01.966109+02:00] doctrine.DEBUG: "START TRANSACTION" [] []
[2020-08-24T10:31:01.967877+02:00] doctrine.DEBUG: INSERT INTO order (product_id,quantity,address,shipping_date,user_id) VALUES (?,?,?) {"1":1,"2":1,"3":"Levent","4":20,"5":32} []
[2020-08-24T10:31:01.971845+02:00] doctrine.DEBUG: "ROLLBACK" [] []
我有两个实体类,分别是User和Order,并且User的变量是“ username,password,orders”(orders变量具有OneToMany关系和mappingBy =“ user”)。Order的变量是“ productId,quantity,address,shippingDate和用户(用户具有ManyToOne关系并且inversedBy =“ orders”)
我的addOrder函数在下面,
/**
* @param Request $request
* @param TokenStorageInterface $tokenStorage
* @return JsonResponse
* @Route("/orders",name="orders_add",methods={"POST"})
*/
public function addOrder(Request $request,TokenStorageInterface $tokenStorage)
{
$entityManager = $this->getDoctrine()->getManager();
try{
$request = $this->transformJsonBody($request);
if (!$request || !$request->request->get('productId') || !$request->request->get('quantity') || !$request->request->get('address') || !$request->request->get('shippingDate')){
throw new Exception();
}
$user = $tokenStorage->getToken()->getUser();
$order = new Order();
$order->setProductId($request->get('productId'));
$order->setQuantity($request->get('quantity'));
$order->setAddress($request->get('address'));
$order->setShippingDate($request->get('shippingDate'));
$order->setUser($user);
$entityManager->persist($order);
$entityManager->flush();
$data = [
'status' => 200,'success' => "Order added successfully",];
return $this->response($data);
}catch (Exception $e){
$data = [
'status' => 422,'errors' => "Order no valid",];
return $this->response($data,422);
}
}
此外,github存储库的链接为https://github.com/Berkayermis/RESTfulService
我已经阅读了很多文章并与很多人进行了交谈,但是自上个月以来,我正在学习REST API,在这个主题上我是一个新手,但是我想学习它。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。