現在、Chrome 開発者ツール コンソールに表示されるエラーに苦しんでいます
GET http://localhost:8080/movie_db/search/movie?movieTitle=Machete 415 (Unsupported Media Type)
angular JSを使用してRESTサービスに接続しようとすると。以前、Chrome で Simple REST プラグインを介して REST サービスにアクセスしようとしたときにこの問題が発生したため、Content-Type ヘッダー パラメータが欠落している可能性が高いと考えられます (Content-Type: 'application/json である必要があります)。 ')。
Angular JS Web サイトによると、次のようにヘッダー パラメーターを設定できます$httpProvider.defaults.headers.get['My-Header']='value'
。残念ながら、これは何の影響も与えず、問題はまだ存在しています。
したがって、REST サービスに送信される angular JS を使用してヘッダー パラメーターを操作する方法を知りたいと思います。
現時点では、私のコードは次のようになります。
function SearchMovieController($scope, $resource) {
$scope.SearchMovie = $resource('http://localhost\\:8080/movie_db/search/:action',
{action: 'movie', movieTitle: 'Machete'},
{get: {method: 'JSONP', headers: [{'Content-Type': 'application/json'}, {'Accept' : 'application/json'}]}});
$scope.SearchMovie.get()
}
サーバー側は次のようになります (私は Spring MVC を使用しています)。
コントローラ:
@Controller
@RequestMapping( "/search/movie" )
public class SearchController { // TODO rename?
private final TheMovieDBService theMovieDBService;
@Autowired
public SearchController( TheMovieDBService theMovieDBService ) {
this.theMovieDBService = theMovieDBService;
}
@ResponseBody
@RequestMapping( method = RequestMethod.GET, produces = "application/json", consumes = "application/json" )
public Map<String, Object> search( @RequestParam String movieTitle ) {
Map<String, Object> response = new HashMap<String, Object>();
try {
TheMovieDBSearchResult searchResult = theMovieDBService.searchMovie( movieTitle );
response.put( "result", searchResult );
response.put( "success", "true" );
} catch ( EncoderException e ) {
response.put( "success", "false" );
}
return response;
}
}
web.xml
<servlet>
<servlet-name>json</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.u6f6o.apps.movie_db.config.web.ServletConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>json</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>