자원 접근의 표준화: URI/URL은 웹에서 자원에 접근하는 표준 방식을 제공한다. 웹 브라우저, 서버, API 등 모든 것이 이 표준을 따른다.
동적 콘텐츠 생성: URL을 통해 서버는 사용자의 요청에 따라 동적으로 콘텐츠를 생성하고 제공할 수 있다. 예를 들어, 쿼리 문자열을 사용해 데이터베이스 검색 결과를 필터링하거나 정렬할 수 있다.
사용자 친화적인 경로: URL을 잘 구성하면 사용자가 웹사이트 내에서 쉽게 탐색할 수 있다. 예를 들어, www.example.com/products/shoes
는 사용자에게 이 URL이 신발 제품에 관한 페이지임을 명확하게 알려준다.
RESTful API: REST 아키텍처 스타일에서 URL은 자원의 위치와 해당 자원에 수행할 행동을 나타낸다. 예를 들어, GET /users
는 모든 사용자를 조회하고, POST /users
는 새 사용자를 생성한다.
웹 라우팅: 웹 애플리케이션에서 URL 경로는 특정 페이지나 기능으로 사용자를 안내한다. 예를 들어, Express.js에서 라우팅을 설정할 때 URL 패턴을 사용한다.
const express = require('express');
const app = express();
app.get('/users', function(req, res) {
res.send('Users List');
});
app.get('/users/:userId', function(req, res) {
res.send('Profile of User ' + req.params.userId);
});
app.listen(3000, function() {
console.log('Server is running on port 3000');
});
이 코드는 /users
경로와 /users/:userId
경로에 대한 라우트를 설정한다. 여기서 :userId
는 동적 매개변수다.
쿼리 문자열은 URL의 일부로, 키-값 쌍으로 이루어진 데이터를 전달하는데 사용된다. 이를 통해 서버는 사용자의 요청을 더 세부적으로 처리할 수 있다.
// URL: http://www.example.com/search?query=javascript&sort=recent
app.get('/search', function(req, res) {
let query = req.query.query; // 'javascript'
let sort = req.query.sort; // 'recent'
// 검색 쿼리와 정렬 옵션에 따라 결과 처리
});
위 코드는 사용자가 제공한 쿼리 문자열을 사용해 특정 조건으로 데이터를 검색하고 정렬하는 방법을 보여준다.
URN은 일반적으로 웹 개발에서 자주 사용되지는 않지만, 특정 산업이나 도메인에서는 중요할 수 있다. 예를 들어, 전자책의 고유 식별자(URN)을 사용하여 전 세계 어디에서나 동일한 책을 참조할 수 있다.
URL에 사용할 수 없는 문자를 안전하게 전송하기 위해 인코딩이 필요하다. 이는 특수 문자를 “%” 뒤에 그 문자의 ASCII 코드를 나타내는 두 자리 16진수로 변환하는 과정을 말한다.
예시: JavaScript에서 URL 인코딩 및 디코딩
let originalText = "이것은 테스트 문자열입니다!";
let encodedText = encodeURIComponent(originalText);
let decodedText = decodeURIComponent(encodedText);
console.log(encodedText); // %EC%9D%B4%EA%B2%83%EC%9D%80%20%ED%85%8C%EC%8A%A4%ED%8A%B8%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9E%85%EB%8B%88%EB%8B%A4%21
console.log(decodedText); // 이것은 테스트 문자열입니다!
HTTP는 웹에서 데이터를 전송하는 데 사용되는 프로토콜이다. HTTPS는 HTTP에 보안 기능을 추가한 것으로, 데이터 전송 시 암호화를 제공한다. 이는 URL의 스킴 부분에서 http
와 https
로 나타난다.
RESTful API는 웹 서비스를 제공하는 일반적인 방법으로, URL을 통해 자원을 표현하고 HTTP 메소드(GET, POST, PUT, DELETE 등)를 사용하여 자원에 대한 작업을 정의한다.
예시: Node.js/Express에서 RESTful API 구현
const express = require('express');
const app = express();
app.get('/api/products', (req, res) => {
// 모든 제품 목록 반환
});
app.post('/api/products', (req, res) => {
// 새 제품 추가
});
app.put('/api/products/:id', (req, res) => {
// 제품 정보 업데이트
});
app.delete('/api/products/:id', (req, res) => {
// 제품 삭제
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
URL은 검색 엔진 최적화(SEO)에 중요한 역할을 한다. 명확하고 의미 있는 URL 구조는 검색 엔진이 사이트의 콘텐츠를 더 잘 이해하고 인덱싱하는 데 도움이 된다.
URN은 일상적인 웹 개발에서는 드물게 사용되지만, 문서, 도서, 특허 등을 일관되게 식별해야 하는 경우에 중요하다. 예를 들어, 도서관 시스템에서는 ISBN을 URN으로 사용하여 책을 고유하게 식별할 수 있다.