springboot controller 中新建一个控制器类 提示该类从未被使用

java web项目

springboot框架

webapi前后端分离

看了一篇文章

从文章中提到的github上拉取的代码

在springboot中新建一个控制器类,却提示该类从未被使用?

是因为创建控制器类的位置不对么?要在主类的包下新建Controller包,然后在这个包里,新建比如HomeController类?

那如果我确实是在这个位置建的,同一个包下还有UserController类,而且该类是可用的,没有提示从未被使用过,那么原因又

是什么呢?

不管提示,点击运行,看看会发生什么。

未被使用的提示竟然没有了!

不过,有一个新的问题,就是浏览器中或postman中,输入该控制器的方法对应的url,处理请求的好像不是相应的方法啊!

多次尝试后,发现HomeController中有一个方法login,请求的完整url是http://localhost:8081/login,不管login位置写的是什么,

请求的好像都是UserController中的一个方法,这是为什么呢?

我发现UserController中也有一个login的方法,但是完整的url是http://localhost:8080/user/login,难道这就是原因?
 

好吧,两个login确实实现的是相同的功能,都是验证用户,给合法用户返回Authorization。

新的问题又出现了:Content type 'multipart/form-data;boundary=-------------------------

-255590055236865295282673;charset=UTF-8' not supported  这是利用postman请求http://localhost:8080/user/login时出现的问

题。post请求,Body中声明两个参数,ussername和password,文章中就只有这些了,按那篇文章写的,应该返回一个token

了啊。是post请求设置哪里有不对么?还是代码有问题呢?

我发现UserController类中的login方法的参数是

@RequestBody User user

所以我上网查了下@RequestBody:

  1、@RequestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。

  2、

    通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
    例如说以下情况:
    $.ajax({
        url:"/login",
        type:"POST",
        data:'{"userName":"admin","pwd","admin123"}',
        content-type:"application/json charset=utf-8",
        success:function(data){
          alert("request success ! ");
        }
    });

    @requestMapping("/login")
    public void login(@requestBody String userName,@requestBody String pwd){
      System.out.println(userName+" :"+pwd);
    }
    这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:
      String userName;
      String pwd;
    那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上
    需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。

 3、

    在一些特殊情况@requestBody也可以用来处理content-type类型为application/x-www-form-urlcoded的内容,只不过这种方式

    不是很常用,在处理这类请求的时候,@requestBody会将处理结果放到一个MultiValueMap<String,String>中,这种情况一般在
    特殊情况下才会使用,
    例如jQuery easyUI的datagrid请求数据的时候需要使用到这种方式、小型项目只创建一个POJO类的话也可以使用这种接受方式

所以我做了一些更改,1、在Headers中添加Content_Type参数,值为application/json,在Body中选择raw,在下面输入:

{"username":"admin","password","1234"}

结果是:

{
    "ok": true,
    "msg": "",
    "data": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsInJvbGVzIjoidXNlciIsImlhdCI6MTU0NTYxOTM4MCwiZXhwIjoxNTQ1NjIwNTgwfQ.wcezy0pUBBYFqEBmIsOK3zYRsMN3GZqYuMxg_w5zt_I"
}

成功了!

猜你喜欢

转载自blog.csdn.net/qq_40741855/article/details/85216795