IP Library › Granted Patent US 8,918,452
Granted Patent B2
US 8,918,452 · App. 13/247,700 · Granted Dec 23, 2014

Web API framework

Inventors: Henrik Frystyk Nielsen (Hunts Point, WA); Glenn Block (Seattle, WA); Randall Tombaugh (Bellevue, WA); Ronald A. Cain (Redmond, WA); HongMei Ge (Bellevue, WA); Alexander Corradini (Redmond, WA)
Assignee: Microsoft Corporation
H04L67/02G06F9/546
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,918,452
App. No.
13/247,700
Granted
Dec 23, 2014
Kind
B2
Abstract

Embodiments allow developers to use HTTP message abstractions inline within their Web API methods to directly access and manipulate HTTP request and response messages. A hosting layer is provided for in-process, in-memory and network-based services. Message handlers and operational handlers may be combined to create a message channel for asynchronous manipulations of the HTTP requests and response. A formatter may be used on the server or client for consuming HTTP and providing desired media types.

Claims (54)

1. A method, comprising:

sending an original HTTP request from a client application having a client domain to a server application having a server domain that is different than the client domain;

selecting one of a plurality of formatters located on a server, the selected formatter identified based upon content of the original HTTP request;

creating a modified HTTP request in the selected formatter using content in the original HTTP request to populate media types in the modified HTTP request, the media types associated with the server domain of the server application; and

creating, in the selected formatter, an HTTP response to be consumed by the client application, the HTTP response formatted for the client domain based upon content in a server-domain response generated by the server application;

wherein the client application and server application are separate components of a single application running on a single device executing an operating system, and wherein creating the modified HTTP request occurs via an in-memory channel without using the operating system's network stack.

2. The method of claim 1 , further comprising:

identifying a Uniform Resource Identifier (URI) within the original HTTP request; and

selecting the selected formatter based upon the URI.

3. The method of claim 1 , further comprising:

identifying a media type accept header within the original HTTP request; and

selecting the selected formatter based upon the media type accept header.

4. The method of claim 1 , wherein the formatting comprises:

combining two or more message handlers in an HTTP message handler pipeline; and

formatting the modified HTTP request using the HTTP message handler pipeline.

5. The method of claim 1 , wherein the formatting comprises:

combining two or more operation handlers in an HTTP handler channel pipeline; and

formatting the modified HTTP request as a service operation using the HTTP handler channel pipeline.

6. A computer system, comprising:

one or more hardware processors;

one or more computer-readable storage media having stored thereon computer-executable instructions that, when executed by the one or more processors, causes the processors to perform a method for media type matching between a client application having a client domain and a server application having a server domain that is different than the client domain, the processors operating to:

receive an original HTTP request from the client application at a server;

select one of a plurality of formatters located on the server, the selected formatter identified based upon content of the original HTTP request;

generate in the selected formatter a modified HTTP request that is configured for the server domain using client-domain content in the original HTTP request to populate media types in the modified HTTP request, the media types associated with the server application; and

provide the modified HTTP request to the server application;

wherein the client application and server application are separate components of a single application running on a single device executing an operating system, and wherein creating the modified HTTP request occurs via an in-memory channel without using the operating system's network stack.

7. The computer system of claim 6 , wherein the processors further operate to:

generate in the selected formatter a modified HTTP response that is configured for the client domain using content from an original server-domain HTTP response from the server application to populate media types associated with the client application.

8. The computer system of claim 6 , wherein the processors further operate to:

identify a Uniform Resource Identifier (URI) within the original HTTP request; and

select the selected formatter based upon the URI.

9. The computer system of claim 6 , wherein the processors further operate to:

identify a media type accept header within the original HTTP request; and

select the selected formatter based upon the media type accept header.

10. The computer system of claim 6 , wherein the client application and server application are separate applications running on a single device.

11. The computer system of claim 6 , wherein the client application and server application are separate components of a single application running on the processers.

12. The computer system of claim 6 , wherein the processors further operate to:

combine two or more message handlers in an HTTP handler channel pipeline; and

generate the modified HTTP request using the HTTP handler channel pipeline.

13. The computer system of claim 6 , wherein the processors further operate to:

combining two or more operation handlers in an HTTP handler channel pipeline; and

generate the modified HTTP request as a service operation using the HTTP handler channel pipeline.

14. A computer program product for implementing a method for media type matching between a client and a server, the computer program product comprising one or more computer-readable storage media having stored thereon computer-executable instructions that, when executed by one or more hardware processors of a computing system, cause the computing system to perform the method comprising of:

sending an original HTTP request from a client application having a client domain to a server application having a server domain that is different than the client domain;

selecting one of a plurality of formatters located on the server, the selected formatter identified based upon content of the original HTTP request;

creating in the selected formatter a modified HTTP request using content in the original HTTP request to populate media types in the modified HTTP request, the media types associated with a destination application running on the server; and

creating in the selected formatter an HTTP response from the server application to populate media types associated with the client application, the HTTP response formatted for the client domain based upon content in a server-domain response generated by the server application;

wherein the client application and server application are separate components of a single application running on a single device executing an operating system, and wherein creating the modified HTTP request occurs via an in-memory channel without using the operating system's network stack.

15. The computer program product of claim 14 , further comprising:

identifying a Uniform Resource Identifier (URI) within the original HTTP request; and

selecting the selected formatter based upon the URI.

16. The computer program product of claim 14 , further comprising:

identifying a media type accept header within the original HTTP request; and

selecting the selected formatter based upon the media type accept header.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2011
From: NEILSEN, HENRIK FRYSTYK; BLOCK, GLENN; TOMBAUGH, RANDALL; CAIN, RONALD A.; GE, HONGMEI; CORRADINI, ALEXANDER
To: MICROSOFT CORPORATION
Reel/Frame 026985/0465 →
Continuity (1)
Related Publication 20130080505A1 · Mar 28, 2013