skip to content
Covid-19 virus
COVID-19 Resources

Reliable information about the coronavirus (COVID-19) is available from the World Health Organization (current situation, international travel). Numerous and frequently-updated resource results are available from this WorldCat.org search. OCLC’s WebJunction has pulled together information and resources to assist library staff as they consider how to handle coronavirus issues in their communities.

Image provided by: CDC/ Alissa Eckert, MS; Dan Higgins, MAM
ASP.NET Core 2 and Angular 5. Preview this item
ClosePreview this item
Checking...

ASP.NET Core 2 and Angular 5.

Author: Valerio De Sanctis
Publisher: Birmingham : Packt Publishing, 2017.
Edition/Format:   eBook : Document : EnglishView all editions and formats
Summary:
Annotation
Rating:

(not yet rated) 0 with reviews - Be the first.

Subjects
More like this

Find a copy online

Find a copy in the library

&AllPage.SpinnerRetrieving; Finding libraries that hold this item...

Details

Genre/Form: Electronic books
Additional Physical Format: Print version:
Sanctis, Valerio De.
ASP.NET Core 2 and Angular 5.
Birmingham : Packt Publishing, ©2017
Material Type: Document, Internet resource
Document Type: Internet Resource, Computer File
All Authors / Contributors: Valerio De Sanctis
ISBN: 1788299787 9781788299787
OCLC Number: 1013820365
Description: 1 online resource (542 pages)
Contents: Cover --
Copyright --
Credits --
About the Author --
About the Reviewers --
www.PacktPub.com --
Customer Feedback --
Table of Contents --
Preface --
Chapter 1: Getting Ready --
Two players, one goal --
The ASP.NET core revolution --
What's new in Angular? --
A full-stack approach --
Single-Page Application --
Common features of a competitive SPA --
Product Owner expectations --
A sample Single-Page Application project --
The vision --
Not your usual "Hello World! --
Introducing TestMakerFree --
Core features and requirements --
Preparing the workspace --
Disclaimer-Do (not) try this at home --
The broken code myth --
Stay hungry, stay foolish, yet be responsible as well --
Versions and builds --
Setting up the project --
Alternative setup using the command line --
Test run --
Looking around --
The configuration files --
Program.cs --
Startup.cs --
The appsettings.json file --
The package.json file --
Upgrading (or downgrading) Angular --
Upgrading (or downgrading) the other packages --
The tsconfig.json file --
The webpack configuration files --
Updating the webpack.config.js file --
Patching the webpack.config.vendor.js file --
Why use a dynamic module bundler? --
Refreshing the Webpack-generated files --
The server-side code --
Controllers/HomeController.cs --
Controllers/SampleDataController.cs --
The /Views/ folder --
The client-side code --
The /ClientApp/app/ folder --
Getting to work --
Static file caching --
A blast from the past --
Back to the future --
Testing it up --
The strongly-typed approach(es) --
Client app cleanup --
Trimming down the component list --
The AppModule class(es) --
Updating the NavMenu --
References --
Suggested topics --
Summary --
Chapter 2: Backend with .NET Core --
The data flow --
The role of ViewModel --
Our first ViewModel --
QuizViewModel --
QuizController --
Adding more action methods --
ByTitle(). Random() --
Testing it up --
Adding other controllers --
QuestionViewModel --
QuestionController --
AnswerViewModel --
AnswerController --
ResultViewModel --
ResultController --
Understanding routes --
Defining routing --
Routing through the ages --
Handling routes in .NET Core --
Three choices to route them all --
Adding more routes --
The Dummy Data Provider --
Dealing with single entries --
Suggested topics --
Summary --
Chapter 3: Frontend with Angular --
Navigation pattern --
Master/detail binding --
The Quiz client-side interface --
The QuizList component --
The new Angular HttpClient --
A match against the old standard --
How to install it --
How to use it --
Dependency Injection --
Get and subscribe --
The onSelect() method --
The template file --
The Stylesheet file --
Adding the component --
The AppModule file(s) --
The HomeComponent template --
Testing it up --
The QuizComponent class --
Adding the Component files --
Adding the component --
Testing it up --
Adding additional lists --
Multiple components instances --
Testing and debugging --
The OnInit interface and lifecycle hooks --
Implementing ngOnInit --
Testing it up --
Two-way data binding --
Disabling two-way data binding --
Client-side routing --
PathLocationStrategy versus HashLocationStrategy --
Refactoring our app --
Registering a new Route --
Upgrading the QuizComponent --
Getting the ID parameter --
Adding the HttpClient --
Fetching the data --
Updating the QuizListComponent --
Master/Detail Routing test --
Adding new components --
AboutComponent --
LoginComponent --
PageNotFoundComponent --
Updating the AppModule --
Full-Scale test --
Suggested topics --
Summary --
Chapter 4: Data Model with Entity Framework Core --
Getting ready --
Installing Entity Framework Core --
Data Modeling approaches --
Model-First --
Database-First --
Code-First --
Pros --
Cons --
Taking a choice. Creating Entities --
ApplicationUser --
Quiz --
Question --
Answer --
Result --
Defining relationships --
The one-to-many EF Lazy-Load pattern --
Setting up the DbContext --
Database initialization strategies --
Choosing the Database Engine --
Updating the appsettings.json file --
Creating the Database --
Updating Startup.cs --
Adding the Initial Migration --
The "No executable found matching command dotnet-ef" error --
Understanding Migrations --
Implementing a Data Seed strategy --
Creating a DbSeeder class --
Adding the DbSeeder to Startup.cs --
Seeding the Database --
Updating the QuizController --
Introducing Mapster --
Installation --
Basic usage --
Updating the QuizController --
Testing the Data Provider --
Suggested topics --
Summary --
Chapter 5: Client-Server Interactions --
Add, update, and delete quizzes --
Updating QuizController --
Adapting the client --
Adding QuizEditComponent --
Activating the Edit mode --
Event handlers versus router links --
Adding the Edit route --
Implementing the Delete feature --
A word on Observables --
First client-server test --
The client-server workflow --
Questions, answers, and results --
Server-side tasks --
QuestionController --
AnswerController --
ResultController --
BaseApiController --
Implementing BaseApiController --
Client-side tasks --
Adding the interfaces --
QuestionListComponent --
Introducing ngOnChanges() --
Why bother? --
The template file --
Adding the references --
QuestionEditComponent --
References and routes --
AnswerListComponent --
AnswerEditComponent --
The template file --
References and routes --
ResultListComponent --
Reference and routes --
ResultEditComponent --
Full-scale test --
Suggested topics --
Summary --
Chapter 6: Style Sheets and UI Layout --
How bad is it, doc? --
Introducing LESS --
Style sheet languages --
CSS --
CSS code sample --
What is LESS and why use it? Variables --
Import directives --
Nested selectors --
Mixins --
Extend pseudo-class --
LESS docs and support --
SASS, Stylus, and other alternatives --
Implementing LESS --
Installing LESS compiler --
Compiling LESS files with Webpack --
DIY versus framework-based styling --
Do-it-yourself approach --
Pros --
Cons --
Framework-based approach --
Pros --
Cons --
Conclusions --
Working with Bootstrap --
Changing the theme --
Rebuild the Webpack vendor config file --
Delete the /wwwroot/dist/ folder --
Update the .csproj file --
Create the update-webpack.bat file --
Testing the new theme --
Revising the UI structure --
AppComponent --
NavMenuComponent --
QuizSearchComponent --
Registering QuizSearchComponent --
The logo SVG file --
A quick test --
Styling the components --
CSS encapsulation --
Native encapsulation using Shadow DOM --
Disable encapsulation --
HomeComponent --
QuizListComponent --
Another UI test --
QuizComponent --
Testing it up --
QuizEditComponent --
Question, answer, and result components --
Buttons and icons --
Tables and DIVs --
Forms and inputs --
Full-scale layout test --
Suggested topics --
Summary --
Chapter 7: Forms and Data Validation --
Data validation --
Forms in Angular --
Template-Driven forms --
The pros --
The cons --
Model-Driven/Reactive forms --
Our first Reactive form --
Adding ReactiveFormsModule --
Updating QuizEditComponent --
Adding validators --
Adding shortcuts --
Upgrading components --
QuestionEditComponent --
AnswerEditComponent --
ResultEditComponent --
Debugging and testing --
A look at the Form Model --
The pipe operator --
Reacting to changes --
Observing the Observable --
Extending the activity log --
Client-side debugging --
Forms unit testing --
Suggested topics --
Summary --
Chapter 8: Authentication and Authorization --
To auth, or not to auth --
Authentication --
Third-party authentication. The rise and fall of OpenID --
OpenID Connect --
Authorization --
Third-party authorization --
Proprietary versus third-party --
Proprietary auth with .NET Core --
Setting up the .NET Core Identity --
Configuring the Identity service --
Extending the ApplicationUser --
Upgrading the DbContext --
Revising the DbSeeder --
A word on async tasks, awaits, and deadlocks --
Updating the database --
Adding the identity migration --
Applying the migration --
Option #1 --
update --
Option #2 --
drop and recreate --
Seeding the data --
Authentication methods --
Sessions --
Tokens --
Signatures --
Two-factor --
Conclusions --
Implementing JWT authentication --
Add the auth service to the .NET Core Startup class --
Updating the AppSettings files --
The TokenController --
Upgrading the BaseApiController --
Reflecting the upgrade on the affected controllers --
Adding the TokenController --
The TokenRequestViewModel --
The TokenResponseViewModel --
Testing with Postman --
Angular login form --
The TokenResponse interface --
The AuthService class --
Updating the AppModule --
The new LoginComponent --
First login test --
Adding the token to the HTTP request header --
The AuthInterceptor class --
Adding the HttpInterceptor in the AppModule --
Enforcing authorization --
Adapting the client --
NavMenuComponent --
QuizComponent --
Shielding the server --
Retrieving the current user ID --
Client-server auth test --
Suggested topics --
Summary --
Chapter 9: Advanced Topics --
Token expiration and refresh tokens --
What's a refresh token? --
Server-side tasks --
Adding the token entity --
Upgrading the user entity --
Upgrading ApplicationDbContext --
Applying the EF core migration --
Implementing the refresh token --
Upgrading TokenResponseViewModel --
Upgrading TokenRequestViewModel --
Upgrading TokenController --
Client-side tasks --
Updating the TokenResponse interface.

Abstract:

Annotation

Develop a simple, yet fully-functional modern web application using ASP.NET Core MVC, Entity Framework and Angular 5. About This Book* Based on the best-selling book ASP.NET Core and Angular 2* Easily build a complete single page application with two of the most impressive frameworks in modern development, ASP.NET Core and Angular* Bring together the capabilities and features of both Angular 5 and ASP.NET Core 2 for full stack development* Discover a comprehensive approach to building your next web project-From managing data, to application design, through to SEO optimization and security Who This Book Is ForThis book is for seasoned ASP.NET developers who already know about ASP.NET Core and Angular in general, but want to know more about them and/or understand how to blend them together to craft a production-ready SPA. What You Will Learn* Use ASP.NET Core to its full extent to create a versatile backend layer based on RESTful APIs* Consume backend APIs with the brand new Angular 5 HttpClient and use RxJS Observers to feed the frontend UI asynchronously* Implement an authentication and authorization layer using ASP.NET Identity to support user login with integrated and third-party OAuth 2 providers* Configure a web application in order to accept user-defined data and persist it into the database using server-side APIs* Secure your application against threats and vulnerabilities in a time efficient way* Connect different aspects of the ASP. NET Core framework ecosystem and make them interact with each other for a Full-Stack web development experienceIn DetailBecome fluent in both frontend and backend web development by combining the impressive capabilities of ASP.NET Core 2 and Angular 5 from project setup right through the deployment phase. Full-stack web development means being able to work on both the frontend and backend portions of an application. The frontend is the part that users will see or interact with, while the backend is the underlying engine, that handles the logical flow: server configuration, data storage and retrieval, database interactions, user authentication, and more. Use the ASP.NET Core MVC framework to implement the backend with API calls and server-side routing. Learn how to put the frontend together using top-notch Angular 5 features such as two-way binding, Observables, and Dependency Injection, build the Data Model with Entity Framework Core, style the frontend with CSS/LESS for a responsive and mobile-friendly UI, handle user input with Forms and Validators, explore different authentication techniques, including the support for third-party OAuth2 providers such as Facebook, and deploy the application using Windows Server, SQL Server, and the IIS/Kestrel reverse proxy. Style and approachMore than just a technical manual, this guide takes you through the most important technical facets of developing with these two hugely popular frameworks and then demonstrates how to put those skills into practice. It's a book that recognizes that what's really important is the end product.

Reviews

User-contributed reviews
Retrieving GoodReads reviews...
Retrieving DOGObooks reviews...

Tags

Be the first.

Similar Items

Related Subjects:(1)

User lists with this item (1)

Confirm this request

You may have already requested this item. Please select Ok if you would like to proceed with this request anyway.

Linked Data


\n\n

Primary Entity<\/h3>\n
<http:\/\/www.worldcat.org\/oclc\/1013820365<\/a>> # ASP.NET Core 2 and Angular 5.<\/span>\n\u00A0\u00A0\u00A0\u00A0a \nschema:CreativeWork<\/a>, schema:Book<\/a>, schema:MediaObject<\/a> ;\u00A0\u00A0\u00A0\nlibrary:oclcnum<\/a> \"1013820365<\/span>\" ;\u00A0\u00A0\u00A0\nlibrary:placeOfPublication<\/a> <http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#Place\/birmingham<\/a>> ; # Birmingham<\/span>\n\u00A0\u00A0\u00A0\nlibrary:placeOfPublication<\/a> <http:\/\/id.loc.gov\/vocabulary\/countries\/enk<\/a>> ;\u00A0\u00A0\u00A0\nschema:about<\/a> <http:\/\/dewey.info\/class\/005.2762\/<\/a>> ;\u00A0\u00A0\u00A0\nschema:about<\/a> <http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#CreativeWork\/angularjs_software_framework<\/a>> ; # AngularJS (Software framework)<\/span>\n\u00A0\u00A0\u00A0\nschema:bookFormat<\/a> schema:EBook<\/a> ;\u00A0\u00A0\u00A0\nschema:creator<\/a> <http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#Person\/sanctis_valerio_de<\/a>> ; # Valerio De Sanctis<\/span>\n\u00A0\u00A0\u00A0\nschema:datePublished<\/a> \"2017<\/span>\" ;\u00A0\u00A0\u00A0\nschema:description<\/a> \"Annotation<\/span>\"@en<\/a> ;\u00A0\u00A0\u00A0\nschema:description<\/a> \"Cover -- Copyright -- Credits -- About the Author -- About the Reviewers -- www.PacktPub.com -- Customer Feedback -- Table of Contents -- Preface -- Chapter 1: Getting Ready -- Two players, one goal -- The ASP.NET core revolution -- What\'s new in Angular? -- A full-stack approach -- Single-Page Application -- Common features of a competitive SPA -- Product Owner expectations -- A sample Single-Page Application project -- The vision -- Not your usual \"Hello World! -- Introducing TestMakerFree -- Core features and requirements -- Preparing the workspace -- Disclaimer-Do (not) try this at home -- The broken code myth -- Stay hungry, stay foolish, yet be responsible as well -- Versions and builds -- Setting up the project -- Alternative setup using the command line -- Test run -- Looking around -- The configuration files -- Program.cs -- Startup.cs -- The appsettings.json file -- The package.json file -- Upgrading (or downgrading) Angular -- Upgrading (or downgrading) the other packages -- The tsconfig.json file -- The webpack configuration files -- Updating the webpack.config.js file -- Patching the webpack.config.vendor.js file -- Why use a dynamic module bundler? -- Refreshing the Webpack-generated files -- The server-side code -- Controllers\/HomeController.cs -- Controllers\/SampleDataController.cs -- The \/Views\/ folder -- The client-side code -- The \/ClientApp\/app\/ folder -- Getting to work -- Static file caching -- A blast from the past -- Back to the future -- Testing it up -- The strongly-typed approach(es) -- Client app cleanup -- Trimming down the component list -- The AppModule class(es) -- Updating the NavMenu -- References -- Suggested topics -- Summary -- Chapter 2: Backend with .NET Core -- The data flow -- The role of ViewModel -- Our first ViewModel -- QuizViewModel -- QuizController -- Adding more action methods -- ByTitle().<\/span>\"@en<\/a> ;\u00A0\u00A0\u00A0\nschema:exampleOfWork<\/a> <http:\/\/worldcat.org\/entity\/work\/id\/4625087747<\/a>> ;\u00A0\u00A0\u00A0\nschema:genre<\/a> \"Electronic books<\/span>\"@en<\/a> ;\u00A0\u00A0\u00A0\nschema:inLanguage<\/a> \"en<\/span>\" ;\u00A0\u00A0\u00A0\nschema:isSimilarTo<\/a> <http:\/\/worldcat.org\/entity\/work\/data\/4625087747#CreativeWork\/asp_net_core_2_and_angular_5<\/a>> ;\u00A0\u00A0\u00A0\nschema:name<\/a> \"ASP.NET Core 2 and Angular 5.<\/span>\"@en<\/a> ;\u00A0\u00A0\u00A0\nschema:productID<\/a> \"1013820365<\/span>\" ;\u00A0\u00A0\u00A0\nschema:publication<\/a> <http:\/\/www.worldcat.org\/title\/-\/oclc\/1013820365#PublicationEvent\/birmingham_packt_publishing_2017<\/a>> ;\u00A0\u00A0\u00A0\nschema:publisher<\/a> <http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#Agent\/packt_publishing<\/a>> ; # Packt Publishing<\/span>\n\u00A0\u00A0\u00A0\nschema:url<\/a> <http:\/\/www.vlebooks.com\/vleweb\/product\/openreader?id=none&isbn=9781788299787<\/a>> ;\u00A0\u00A0\u00A0\nschema:url<\/a> <http:\/\/VH7QX3XE2P.search.serialssolutions.com\/?V=1.0&L=VH7QX3XE2P&S=AC_T_B&C=ASP.NET%20Core%202%20and%20Angular%205&T=marc&tab=BOOKS<\/a>> ;\u00A0\u00A0\u00A0\nschema:url<\/a> <https:\/\/public.ebookcentral.proquest.com\/choice\/publicfullrecord.aspx?p=5163032<\/a>> ;\u00A0\u00A0\u00A0\nschema:url<\/a> <https:\/\/search.ebscohost.com\/login.aspx?direct=true&scope=site&db=nlebk&db=nlabk&AN=1641412<\/a>> ;\u00A0\u00A0\u00A0\nschema:workExample<\/a> <http:\/\/worldcat.org\/isbn\/9781788299787<\/a>> ;\u00A0\u00A0\u00A0\numbel:isLike<\/a> <http:\/\/bnb.data.bl.uk\/id\/resource\/GBB7N5967<\/a>> ;\u00A0\u00A0\u00A0\nwdrs:describedby<\/a> <http:\/\/www.worldcat.org\/title\/-\/oclc\/1013820365<\/a>> ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n\n

Related Entities<\/h3>\n
<http:\/\/dewey.info\/class\/005.2762\/<\/a>>\u00A0\u00A0\u00A0\u00A0a \nschema:Intangible<\/a> ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n
<http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#Agent\/packt_publishing<\/a>> # Packt Publishing<\/span>\n\u00A0\u00A0\u00A0\u00A0a \nbgn:Agent<\/a> ;\u00A0\u00A0\u00A0\nschema:name<\/a> \"Packt Publishing<\/span>\" ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n
<http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#CreativeWork\/angularjs_software_framework<\/a>> # AngularJS (Software framework)<\/span>\n\u00A0\u00A0\u00A0\u00A0a \nschema:CreativeWork<\/a> ;\u00A0\u00A0\u00A0\nschema:name<\/a> \"AngularJS (Software framework)<\/span>\" ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n
<http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#Person\/sanctis_valerio_de<\/a>> # Valerio De Sanctis<\/span>\n\u00A0\u00A0\u00A0\u00A0a \nschema:Person<\/a> ;\u00A0\u00A0\u00A0\nschema:familyName<\/a> \"Sanctis<\/span>\" ;\u00A0\u00A0\u00A0\nschema:givenName<\/a> \"Valerio De<\/span>\" ;\u00A0\u00A0\u00A0\nschema:name<\/a> \"Valerio De Sanctis<\/span>\" ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n
<http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#Place\/birmingham<\/a>> # Birmingham<\/span>\n\u00A0\u00A0\u00A0\u00A0a \nschema:Place<\/a> ;\u00A0\u00A0\u00A0\nschema:name<\/a> \"Birmingham<\/span>\" ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n
<http:\/\/id.loc.gov\/vocabulary\/countries\/enk<\/a>>\u00A0\u00A0\u00A0\u00A0a \nschema:Place<\/a> ;\u00A0\u00A0\u00A0\ndcterms:identifier<\/a> \"enk<\/span>\" ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n
<http:\/\/worldcat.org\/entity\/work\/data\/4625087747#CreativeWork\/asp_net_core_2_and_angular_5<\/a>>\u00A0\u00A0\u00A0\u00A0a \nschema:CreativeWork<\/a> ;\u00A0\u00A0\u00A0\nrdfs:label<\/a> \"ASP.NET Core 2 and Angular 5.<\/span>\" ;\u00A0\u00A0\u00A0\nschema:description<\/a> \"Print version:<\/span>\" ;\u00A0\u00A0\u00A0\nschema:isSimilarTo<\/a> <http:\/\/www.worldcat.org\/oclc\/1013820365<\/a>> ; # ASP.NET Core 2 and Angular 5.<\/span>\n\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n
<http:\/\/worldcat.org\/isbn\/9781788299787<\/a>>\u00A0\u00A0\u00A0\u00A0a \nschema:ProductModel<\/a> ;\u00A0\u00A0\u00A0\nschema:isbn<\/a> \"1788299787<\/span>\" ;\u00A0\u00A0\u00A0\nschema:isbn<\/a> \"9781788299787<\/span>\" ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n
<http:\/\/www.worldcat.org\/title\/-\/oclc\/1013820365<\/a>>\u00A0\u00A0\u00A0\u00A0a \ngenont:InformationResource<\/a>, genont:ContentTypeGenericResource<\/a> ;\u00A0\u00A0\u00A0\nschema:about<\/a> <http:\/\/www.worldcat.org\/oclc\/1013820365<\/a>> ; # ASP.NET Core 2 and Angular 5.<\/span>\n\u00A0\u00A0\u00A0\nschema:dateModified<\/a> \"2020-04-16<\/span>\" ;\u00A0\u00A0\u00A0\nvoid:inDataset<\/a> <http:\/\/purl.oclc.org\/dataset\/WorldCat<\/a>> ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n
<http:\/\/www.worldcat.org\/title\/-\/oclc\/1013820365#PublicationEvent\/birmingham_packt_publishing_2017<\/a>>\u00A0\u00A0\u00A0\u00A0a \nschema:PublicationEvent<\/a> ;\u00A0\u00A0\u00A0\nschema:location<\/a> <http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#Place\/birmingham<\/a>> ; # Birmingham<\/span>\n\u00A0\u00A0\u00A0\nschema:organizer<\/a> <http:\/\/experiment.worldcat.org\/entity\/work\/data\/4625087747#Agent\/packt_publishing<\/a>> ; # Packt Publishing<\/span>\n\u00A0\u00A0\u00A0\nschema:startDate<\/a> \"2017<\/span>\" ;\u00A0\u00A0\u00A0\u00A0.\n\n\n<\/div>\n\n

Content-negotiable representations<\/p>\n