Angular 6 HTTP客户端发布-错误的请求

帕维尔

我有以下问题。我有一个使用API​​的服务器,我将请求发送到注册端点,但作为响应,我收到400 Bad Request错误,指出必须填写名称,姓氏,电子邮件等。问题在于它们已被填充。我不再想念想法了。我的代码:

import {Component} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})

export class AppComponent {
    title = 'Brak tytułu';

    constructor(private http: HttpClient) {
    }

    registerUser() {
        const config = {headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')};
        const user: User = {
            name: 'Pawel',
            surname: 'Tester',
            email: '[email protected]',
            password: 'loremipsum12',
            password_confirm: 'loremipsum12',
            event_id: 1,
        };

        this.http.post('https://myapiserver', user, config).subscribe((res) => {
                console.log(res);
                console.log(user);
            },
            error => {
                console.log(error);
                console.log(user);
            });
    }
}

interface User {
    name: string;
    surname: string;
    email: string;
    password: string;
    password_confirm: string;
    event_id: number;
}

这段代码可以正常工作,但是他是angularJS

    // User create
$scope.createUser = function()
{
    var create_req = $rootScope.reqDefaults;
        create_req.method = 'POST';
        create_req.url = $rootScope.api+'/admin/user';
        create_req.data = $httpParamSerializerJQLike($scope.current);
        create_req.transformRequest = angular.identity;

    // Users list
    $http(create_req)
        .then(function(response){
            $location.path('/users');
            $.notify({
                title: '<strong>Użytkownik utworzony.</strong>',
                message: $scope.current.name+' '+$scope.current.surname+' (ID: '+response.data.id+')'
            },{
                type: 'success'
            });
            return true;
        }, function(response){
            $rootScope.rspError(response.data);
            return false;
        });
};

如果我从Postman向注册端点发送请求,则一切正常,我的用户已正确注册:(我将内容类型设置为application / x-www-form-urlencoded。

克劳迪乌·霍达(Claudiu Hojda)

实际上HttpClientfromAngular可以非常聪明地确定您的请求应包含哪种类型的内容。通过查看的源代码

if (this.body instanceof HttpParams) {
  return 'application/x-www-form-urlencoded;charset=UTF-8';
}

如果您将主体设置为,则会看到它将为您设置所需的标头HttpParams因此,解决问题的方法应该是:

const body = new HttpParams()
  .set('name', 'foo')
  .set('surname', 'bar')

this.http.post('https://myapiserver', body).subscribe(...);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在使用HTTP客户端,但正常工作与curl命令发布tar.gz文件获取错误

Angular 6 Basic Auth从客户端返回401

从Angular客户端到Spring的GET请求

HTTP发布并在Angular 6中获取请求

Angular 2客户端错误

Angular的新HTTP客户端错误无法读取未定义的属性“数据”

从http发布请求下载文件-Angular 6

Angular 6 Http客户端自定义URL和标头

Angular 4.3 Http客户端

Angular HTTP客户端重试时间无法在调用方上捕获错误

Angular 6 HTTP请求处理

C#asp.net核心HTTP POST请求适用于邮递员,但不适用于我的Angular客户端(404错误)

在Angular 6中顺序执行http请求

Angular 6-使用http客户端等待,如果失败,如何获取状态代码

Angular Apollo客户端返回错误请求

客户端发布响应中的jQuery错误-POST HTTP / 1.1“ 400

客户端React JS发布请求

Http客户端Angular 6

Laravel HTTP客户端发布请求不起作用

如何使用Jetty http客户端将JSON作为请求正文发布?

使用Spotify客户端ID进行卷曲发布请求并秘密返回无效的客户端

访问模型状态错误 - Asp.Net web api 身份 - Angular 6 - Http Post 请求

Jersey 客户端发布 PUT InputStream“400 错误请求”

Angular 6 多 HTTP 请求 RxJs

在客户端模拟 HTTP 请求

来自 Android 客户端的 HTTP 请求

Angular:在发布请求时获得 Http 400 错误请求

离子 HTTP 客户端发布请求跨源错误,但适用于 Postman

从 Angular 客户端到 NestJS 服务器的 Http 请求上的数字变成字符串