2017-12-11 3 views
0

안녕하세요, webAPI에서 내 응용 프로그램의 클라이언트 쪽을 업데이트하려고합니다. 그래서 누군가가 웹 API를 호출하면 데이터를 컨트롤러 또는 자바 스크립트로 푸시하는 메소드를 호출하여 사용자보기보기에 데이터를 표시합니다.MVC Controller 메서드 호출 웹 API

나는 메서드를 호출하고 심지어 POST를 컨트롤러에 호출하려고 시도했지만 컨트롤러 메서드에 결코 도달하지 못했습니다. 나는 몇 가지 내가 구현 무슨 JS 될 것입니다 더 나은 생각

[HttpPost] 
public ActionResult Refresh(string id) 
{ 
    if (User.Identity.Name == id) return RedirectToAction("Index"); 
    else return null; 
} 

가이 같은 클라이언트를 새로 고침 할 수 있다면 나도 몰라 :이 같은 컨트롤러의 간단한 방법이있다. 하지만 어디서나 대답을 찾지 못했습니다. 모두가 컨트롤러에서 webApi를 호출하고 있지만 다른 방법은 아닙니다. 어떻게해야합니까?

+1

질문은 ** 왜 **입니까? –

+0

어떻게 웹 API를 호출하나요? 아약스를 사용하여 – Saineshwar

답변

0

매개 변수 내의 동작이 인식되는 반면 경로를 정의해야합니다.

예 : [루트 ("API/재생/{ID}")]

0

모두가 MVC 컨트롤러에서 API를 호출하는 이유가있다.

API의 목적은 이러한 작업을 요청하는 데 필요한 권한이있는 모든 사용자에게 데이터를 제공하거나 데이터 조작을 수행하는 것입니다. 그게 전부 야.

API는 MVC 응용 프로그램, 모바일 응용 프로그램, JAVA 응용 프로그램 또는 JavaScript 프런트 엔드 또는 다른 사람이 알고 있는지 여부에 상관하지 않습니다.

물론 어떤 이유로 든 주 API에서 다른 API를 호출하는 것이 좋습니다.

기본적으로 WebApi에서 MVC 컨트롤러를 호출해야하는 이유가 있습니다. 기본적으로 정상적인 패러다임과 반대입니다.

유효한 이유가 있다고 가정합니다. MVC 작업 (컨트롤러 메서드)은 일반 API처럼보기 또는 데이터를 반환 할 수 있습니다. Views를 반환하거나 예를 들어 Json 데이터를 반환 할 수 있습니다. 실제로 MVC 작업은 동일한 방식으로 호출 될 수 있다는 것을 의미하는 WebApi 끝점처럼 동작 할 수 있습니다. URL을 올바르게 가져와야 WebApi가 적절한 경로를 통해 MVC 컨트롤러에 호출됩니다.

테스트하려면 Json 데이터를 반환하고 브라우저에서 호출하는 간단한 MVC 작업을 작성하십시오. URL을 올바르게 조작하면 브라우저에 데이터가 표시됩니다. 이제 동일한 URL을 사용하고 브라우저에서와 마찬가지로 전체 URL을 사용하여 WebApi 컨트롤러에서 비슷한 요청을 보냅니다.

이 기본적으로 GET 웹 API 호출을 모방
public JsonResult DemoCall(int number) 
{ 
    return Json($"{number}", JsonRequestBehavior.AllowGet); 
} 

, 내가 HomeController에서이 방법을 배치 : 당신을 가정

은 MVC에서이 같은 있습니다.

http://localhost:55712/home/democall?number=3

은 당신이 가진 모든이, 지금 당신의 웹 API에서하기 : 당신의 그것을, 당신은 결과를 볼 수있는 브라우저에서 이런 식으로 뭔가를 사용할 수있는 포트 55712에서 실행한다고 가정 해 봅시다 웹 사이트를 실행할 수 있습니다 이 URL에 요청 (예 : HttpClient 사용)을 요청하면 데이터를 가져옵니다. 그런 다음 당신이 원하는 것을 결정할 수 있습니다. POST 방법에도 똑같이 적용됩니다.

물론 정말로 큰 질문은 WebApi에서 MVC 작업을 호출해야하는 이유입니다.하지만 정말로해야한다면 매우 간단합니다. 다른 API와 마찬가지로 처리하십시오.

+0

내가 응답을 확인하는 것을 놓친 경우에도 감사합니다. 컨트롤러에 필요한 승인 때문에 로그인 페이지가있어서 메소드를 호출하기 위해 [AllowAnonymous]를 추가해야했습니다. 아니면 쿠키를 추가하여 요청할 수있는 다른 솔루션이 있습니까? –

관련 문제