Я намерен создать объект (фактически объекты внутри объекта) в Angular и отправить его с помощью служб, чтобы Laravel API мог принимать данные и обрабатывать то же самое (вставлять данные, отправленные Angular). Я успешно сгенерировал объекты внутри объекта. См. Журнал консоли, как показано ниже:
{"request":{"data":"DeTurgVx6Oyh0is0TZMJncHHJh6JBevZbgW1XL2s1uvXk7qKKMRlJ6FJ1AYAiNSxHlA0JLO9pyQgYFBWQHnliOPVHsaFtsVZ8emmsSS7MOfKBP6x2CZqCMWegRMdoaV9TJxKSEsKhD48frwiOwwD4GKChYiX0HfZKp5Wm6aQCOSuXC7HyXb+KZjbhWsmispUhz21FBf0T6NWaPmOgf/eWtMgCu2hPYj7IyrGLEmt8QwmCn79VTDmNnAeM7zecXqg/TPu1wqoYrBXq8IHUQ9+CA= = ","salt":"YWRnaHJ0eXVwb2Vxd2VkZg= = "}}
Теперь я хочу отправить данные через службы, чтобы Laravel мог это принять. Чтобы сделать то же самое, я сделал следующее. В этом случае данные отправляются с помощью метода post, однако данные не вставляются в базу данных, поскольку я думал, что не передал Content-Type': 'application/json с услугами в качестве опции.
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { environment } from '../environments/environment';
import { User } from '../app/shared/models/user.model';
export class RegistrationService {
private rootUrl = environment.api;
private httpOptions: any;
constructor(private http: HttpClient) {
this.httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json'})
};
}
registerUser(form){
var formValues = JSON.stringify(form);
return this.http.post(this.rootUrl+'register', formValues);
}
Итак, чтобы исправить вышесказанное, я подключил this.httpOptions с вызовом api внутри службы, как показано ниже, но он показывает мне 405 method not allowed.
return this.http.post(this.rootUrl+'register', formValues, this.httpOptions);
Чтобы решить эту проблему, я приложил приведенный ниже код - Laravel index.php, однако это не решает проблему.
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With');
header('Access-Control-Allow-Credentials: true');
$app->run();
Может кто подскажет, как я могу решить проблему?
Это маршрутweb.php в Laravel:
$router->get('/', function () use ($router) {
return $router->app->version();
});
$router->group([
'prefix' => 'api',
'middleware' => ['XSS'],
],
function () use ($router) {
$router->post('register', ['uses' => 'UserController@register']);
});
Ниже приведен API, вызываемый при отображении метода 405:
Request URL: http://localhost/projectName/api/register Request Method: OPTIONS Status Code: 405 Method Not Allowed Remote Address: [::1]:80 Referrer Policy: no-referrer-when-downgrade
Вот заголовок ответа:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Origin: *
Allow: POST
Cache-Control: no-cache, private
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
Date: Tue, 08 Jan 2019 05:16:44 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.18 (Ubuntu)
Transfer-Encoding: chunked
Код маршрута @devk вставлен в мой запрос. Пожалуйста, проверьте.
Когда вы отправляете запрос из своего приложения Angular, можете ли вы проверить, на какой URL он отправляется, и вставить его сюда?
@devk Изменил мой запрос. Пожалуйста, проверьте вызывающий URL внизу.
@devk Я предоставил вам неверную информацию. Я использую web.php для маршрута.





Покажите нам маршрут, по которому вы пытаетесь добраться до
POST.