当前位置: 首页 > 知识库问答 >
问题:

Post Request return 404用于带邮差的Spring靴

华浩壤
2023-03-14

我正在尝试使用邮递员来测试我为Spring启动应用程序创建的帖子请求之一。我通过邮递员的帖子请求总是返回404。

  • 我已经为get请求创建了相同的映射路径,对于邮递员,get请求的工作方式与预期的一样

我的服务代码

@Service
public class AmazonClient {

    private AmazonS3 s3client;

    @Value("${amazonProperties.endpointUrl}")
    private String endpointUrl;
    @Value("${amazonProperties.bucketName}")
    private String bucketName;
    @Value("${amazonProperties.accessKey}")
    private String accessKey;
    @Value("${amazonProperties.secretKey}")
    private String secretKey;

    @PostConstruct
    private void initializeAmazon() {
        AWSCredentials credentials = new BasicAWSCredentials(this.accessKey, this.secretKey);
        this.s3client = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_2).withCredentials(
                new AWSStaticCredentialsProvider(credentials)).build();
    }

    @Async
    public String uploadFile(MultipartFile multipartFile, boolean enablePublicReadAccess) {
        String fileUrl = "";
        System.out.println("Reach");
        try {
            File file = convertMultiPartToFile(multipartFile);
            String fileName = generateFileName(multipartFile);
            System.out.println("FileName: " + fileName);
            fileUrl = endpointUrl + "/" + bucketName + "/" + fileName;
            PutObjectRequest putObjectRequest = new PutObjectRequest(this.bucketName, fileName, file);

            if (enablePublicReadAccess) {
                putObjectRequest.withCannedAcl(CannedAccessControlList.PublicRead);
            }
            s3client.putObject(putObjectRequest);
            file.delete();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileUrl;
    }

    private File convertMultiPartToFile(MultipartFile file) throws IOException {
        File convFile = new File(file.getOriginalFilename());
        FileOutputStream fos = new FileOutputStream(convFile);
        fos.write(file.getBytes());
        fos.close();
        return convFile;
    }

    private String generateFileName(MultipartFile multiPart) {
        return new Date().getTime() + "-" + multiPart.getOriginalFilename().replace(" ", "_");
    }


    public String deleteFileFromS3Bucket(String fileUrl) {
        String fileName = fileUrl.substring(fileUrl.lastIndexOf("/") + 1);
        s3client.deleteObject(new DeleteObjectRequest(bucketName, fileName));
        return "Successfully deleted";
    }
}

我的控制器代码:


@RestController
@RequestMapping("/storage/files")
public class BucketController {

    private AmazonClient amazonClient;

    @Autowired
    BucketController(AmazonClient amazonClient) {
        this.amazonClient = amazonClient;
    }


    @GetMapping
    public String getFile(){
        return "Files";
    }

    @PostMapping("/file")
    public String file() {
        return "Reach!";
    }

    @PostMapping
    public String uploadFile(@RequestPart(value = "file") MultipartFile file) {
        System.out.println("Reach!!");
        return this.amazonClient.uploadFile(file, true);
    }

    @DeleteMapping
    public String deleteFile(@RequestPart(value = "url") String fileUrl) {
        return this.amazonClient.deleteFileFromS3Bucket(fileUrl);
    }
}

我的安全配置:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/css/**", "/js/**", "/fonts/**", "/index").permitAll()
                .antMatchers("/storage*").permitAll();

通过邮递员,我选择了一个POST请求并将http://localhost:8080/storage/files/file,在正文中,我输入了一个关键的“文件”并将值设置为文件类型,并从本地选择了一个文件。这是响应:

{
    "timestamp": "2019-09-02T19:09:54.864+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/storage/files/file"
}

项目结构

邮差结果

共有1个答案

笪德华
2023-03-14

这几乎可以肯定是您的安全配置干扰。

您是否尝试过:。而是antMatchers(“/存储/**”)

 类似资料:
  • 编辑:对于尚未使用JavaFX的用户:当用户只输入一个字符时,将调用方法check(String text)。所以结果也应该是真的,当有1到5个数字时。但不会更多;-)

  • 我的web.xml的ResourceServlet看起来像 但不幸的是我得到了这个错误: 我觉得很奇怪,因为文件夹中的所有映像都被访问了,但我的.swf怎么会被“保护”呢? 之后,我决定将更改为,它最终起作用了。我的问题是...为什么?

  • 我有以下thymeleaf html页面: 问题出在css样式表上。基本上Spring似乎找不到它,尽管我把文件放在 /resources/static/css/main.css 它返回错误(在日志中): 现在医生都说Spring Boot应该自动提供 /resources/static 这是我的网络配置: 出于某种原因,编辑器不让我插入Spring安全配置而不抱怨其格式不正确(IntelliJ、

  • 我正在尝试在Spring Boot中使用JavaMailSender发送电子邮件。我尝试了几乎所有的方法,但仍然得到这个错误。请建议我该怎么做才能使我的代码正常工作?谢谢!!! 这是我发送电子邮件的代码。 application.properties文件 当我尝试运行代码时,遇到以下错误异常

  • 大家好,请告诉我如何在普通jersey rest服务或任何没有spring的web应用程序上添加aop。我用这个链接试过了http://ganeshghag.blogspot.in/2012/10/demystifying-aop-getting-started-with.html但它没有起作用。在本例中,我添加了aop。META-INF中的xml。但它仍然没有检测到我用@Aspect注释添加的类

  • 我尝试按照Spring入门指南“使用Spring MVC提供Web内容”,该指南除了使用Maven之外还使用了Spring Boot和Gradle。我为Eclipse安装了Gradle插件。 我希望使用Eclipse中的Tomcat服务器运行应用程序,因为我还遵循了“将Spring Boot JAR应用程序转换为WAR”指南,并更改了指南中提到的“build.gradle”文件。基本上,我添加了行