上传到Azure时无法访问RESTful端点

时间:2018-02-07 22:25:40

标签: java azure spring-boot azure-web-app-service

我正在尝试在此springboot tutorial之后上传基本的RESTful API。基本上,我有一个端点/greeting,它返回一个json {"id":1,"content":"Hello, World!"}。这是代码中的请求:

@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
    return new Greeting(counter.incrementAndGet(), String.format(template,  name));
}

当我在本地服务器上运行时,这完全正常,但是当我上传到我的Azure App Service时失败。我不确定哪里出了问题,可以使用一些帮助。

我正在使用Eclipse和Azure工具包,我正在使用maven项目。我通过右键单击项目发布到Azure - > Azure - >发布为Azure Web App。

当发布完成并且我尝试转到Azure服务器上的/greeting端点时,出现404错误。如果我包含一个空白的html页面,我从Postman得到的响应只是html文件的内容,而不是我想要返回的json。

我的预期结果是让json回来,我可以使用一些建议。

1 个答案:

答案 0 :(得分:1)

我刚从您提到的springboot tutorial下载了示例代码,并尝试将其部署到我的Azure应用服务中。它对我有用。

请参阅我的步骤并检查您是否错过了某些内容。

步骤1:使用mvn package来构建pom.xml文件所在目录中的JAR包。 (这是E:\Downloads\gs-rest-service-master\gs-rest-service-master\complete对我来说)

enter image description here

第2步:然后您可以在JAR文件夹中看到target包。

enter image description here

使用wwwroot/文件将其部署到KUDU上的根web.config

<强> 的web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
        arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\gs-rest-service-0.1.0.jar&quot;">
    </httpPlatform>
  </system.webServer>
</configuration>

请确保jar中配置的web.config包名称与上传的jar包名称相同!

enter image description here

第3步:请确保ApplicationSettings与您的项目匹配,例如jdk version,tomcat version

enter image description here

第4步:重新启动您的应用服务并访问网址: https://<your app name>.azurewebsites.net/greeting

enter image description here

希望它对你有所帮助。