【问题标题】:How to call a URL using spring rest?如何使用 spring rest 调用 URL?
【发布时间】:2018-02-01 19:20:51
【问题描述】:

我正在使用 spring rest 示例代码。我想从我的代码中调用一个 URL。我是新来的休息和春天。这是我的控制器

 @RestController
public class EmployeeRESTController 
{
    @RequestMapping(value = "/employees")
    public @ResponseBody EmployeeListVO getAllEmployees() 
    {
        EmployeeListVO employees = new EmployeeListVO();

        EmployeeVO empOne = new EmployeeVO(1,"Lokesh","Gupta","howtodoinjava@gmail.com");
        EmployeeVO empTwo = new EmployeeVO(2,"Amit","Singhal","asinghal@yahoo.com");
        EmployeeVO empThree = new EmployeeVO(3,"Kirti","Mishra","kmishra@gmail.com");


        employees.getEmployees().add(empOne);
        employees.getEmployees().add(empTwo);
        employees.getEmployees().add(empThree);

        return employees;
    }

    @RequestMapping(value = "/employees/{id}")
    @ResponseBody
    public ResponseEntity<EmployeeVO> getEmployeeById (@PathVariable("id") int id) 
    {
        if (id <= 3) {
            EmployeeVO employee = new EmployeeVO(1,"Lokesh","Gupta","howtodoinjava@gmail.com");
            return new ResponseEntity<EmployeeVO>(employee, HttpStatus.OK);
        }
        return new ResponseEntity(HttpStatus.NOT_FOUND);
    }
}

有模型类

    @XmlRootElement (name="employees")
public class EmployeeListVO
{
    private List<EmployeeVO> employees = new ArrayList<EmployeeVO>();

    public List<EmployeeVO> getEmployees() {
        return employees;
    }

    public void setEmployees(List<EmployeeVO> employees) {
        this.employees = employees;
    }
}

    @XmlRootElement (name = "employee")
@XmlAccessorType(XmlAccessType.NONE)
public class EmployeeVO implements Serializable
{
    private static final long serialVersionUID = 1L;

    @XmlAttribute
    private Integer id;

    @XmlElement
    private String firstName;

    @XmlElement
    private String lastName;

    @XmlElement
    private String email;

    public EmployeeVO(Integer id, String firstName, String lastName, String email) {
        super();
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
    }

    public EmployeeVO(){

    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "EmployeeVO [id=" + id + ", firstName=" + firstName
                + ", lastName=" + lastName + ", email=" + email + "]";
    }
}

当我调用 url localhost:8080/springrestexample/employees/ 时,会出现一些数据。现在我想修改这段代码。如果我调用上面的 url,我想将页面重定向到另一个 URL,例如 https://cp.lk/index.php/cbs/sms/send?

【问题讨论】:

  • 您可以通过返回 http 302 请求浏览器执行此操作。
  • @ZakiAnwarHamdani 你能解释一下吗?
  • 而不是 return new ResponseEntity(HttpStatus.NOT_FOUND);,尝试 return "redirect:cp.lk/index.php/cbs/sms/send";
  • @ZakiAnwarHamdani 返回 url 时我必须使用的方法的数据类型是什么
  • HttpStatus = OK还是NOT_FOUND时重定向到URL?如果是OK,您还需要返回EmployeeVO 以及URL,因此需要相应地加载您的Response

标签: java spring rest maven


【解决方案1】:
@RestController
public class URLController {

  @RequestMapping("/foo")
  void urlFoo(HttpServletResponse response) throws IOException {
    response.sendRedirect("some-url");
  }

}

【讨论】:

  • 请解释为什么该代码可以解决问题中提出的问题。
【解决方案2】:

这里有很多解决方案:Redirect to an external URL from controller action in Spring MVC

例如使用 RedirectView

在您的用例中:

@RequestMapping(value = "/employees")
public RedirectView redirect() 
{
    return new RedirectView("https://cp.lk/index.php/cbs/sms/send");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2012-11-29
    • 2015-07-31
    • 2021-05-15
    • 2018-05-06
    • 2012-09-23
    • 1970-01-01
    相关资源
    最近更新 更多