deleted
This commit is contained in:
@@ -1,330 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<!-- saved from url=(0069)file:///Users/home/Downloads/deepseek_html_20251218_ab3325%20(4).html -->
|
|
||||||
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>API Explorer - Starter Template</title>
|
|
||||||
<style>
|
|
||||||
* {
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: #333;
|
|
||||||
background: #f5f5f5;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container {
|
|
||||||
max-width: 1000px;
|
|
||||||
margin: 0 auto;
|
|
||||||
background: white;
|
|
||||||
border-radius: 10px;
|
|
||||||
padding: 30px;
|
|
||||||
box-shadow: 0 5px 15px rgba(0,0,0,0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
color: #4361ee;
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subtitle {
|
|
||||||
text-align: center;
|
|
||||||
color: #666;
|
|
||||||
margin-bottom: 30px;
|
|
||||||
font-size: 1.1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.api-url {
|
|
||||||
background: #e8f4fd;
|
|
||||||
padding: 15px;
|
|
||||||
border-radius: 8px;
|
|
||||||
text-align: center;
|
|
||||||
margin: 20px 0;
|
|
||||||
font-family: 'Courier New', monospace;
|
|
||||||
font-size: 1.1rem;
|
|
||||||
border-left: 4px solid #4361ee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section {
|
|
||||||
background: #f8f9fa;
|
|
||||||
padding: 20px;
|
|
||||||
border-radius: 8px;
|
|
||||||
margin: 25px 0;
|
|
||||||
border-left: 4px solid #4cc9f0;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
color: #3a0ca3;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
padding-bottom: 8px;
|
|
||||||
border-bottom: 2px solid #f0f0f0;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
color: #4361ee;
|
|
||||||
margin: 20px 0 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.task {
|
|
||||||
background: white;
|
|
||||||
padding: 15px;
|
|
||||||
border-radius: 6px;
|
|
||||||
margin: 15px 0;
|
|
||||||
border: 1px solid #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
background: #4361ee;
|
|
||||||
color: white;
|
|
||||||
border: none;
|
|
||||||
padding: 10px 20px;
|
|
||||||
border-radius: 5px;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 1rem;
|
|
||||||
margin: 5px;
|
|
||||||
transition: background 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover {
|
|
||||||
background: #3a0ca3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.output-area {
|
|
||||||
background: #2d2d2d;
|
|
||||||
color: #f8f8f2;
|
|
||||||
padding: 15px;
|
|
||||||
border-radius: 6px;
|
|
||||||
min-height: 80px;
|
|
||||||
max-height: 300px;
|
|
||||||
overflow-y: auto;
|
|
||||||
font-family: 'Courier New', monospace;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
white-space: pre-wrap;
|
|
||||||
word-wrap: break-word;
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note {
|
|
||||||
background: #fff3cd;
|
|
||||||
border-left: 4px solid #ffc107;
|
|
||||||
padding: 12px;
|
|
||||||
margin: 15px 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note strong {
|
|
||||||
color: #856404;
|
|
||||||
}
|
|
||||||
|
|
||||||
.instructions {
|
|
||||||
background: #e8f5e9;
|
|
||||||
padding: 15px;
|
|
||||||
border-radius: 6px;
|
|
||||||
margin: 20px 0;
|
|
||||||
border-left: 4px solid #4caf50;
|
|
||||||
}
|
|
||||||
|
|
||||||
.code-block {
|
|
||||||
background: #f8f9fa;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-family: 'Courier New', monospace;
|
|
||||||
margin: 10px 0;
|
|
||||||
border-left: 3px solid #4361ee;
|
|
||||||
white-space: pre;
|
|
||||||
overflow-x: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.explanation {
|
|
||||||
background: #e8f4fd;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
margin: 10px 0;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.explanation code {
|
|
||||||
background: #e3f2fd;
|
|
||||||
padding: 2px 4px;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<h1>🚀 API Explorer</h1>
|
|
||||||
<p class="subtitle">Learn to work with APIs using Fetch API</p>
|
|
||||||
|
|
||||||
<div class="api-url">
|
|
||||||
🌐 Your API Base URL: <strong>https://api.techshare.cc/api</strong>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Section 1: Basic Tasks -->
|
|
||||||
<div class="section">
|
|
||||||
<h2>🎮 Basic Tasks</h2>
|
|
||||||
|
|
||||||
<!-- Task 1 -->
|
|
||||||
<div class="task">
|
|
||||||
<h3>📋 Task 1: Get All Users</h3>
|
|
||||||
<div class="code-block">fetch('https://api.techshare.cc/api/users')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
document.getElementById('output_users').textContent = JSON.stringify(data);
|
|
||||||
})</div>
|
|
||||||
<div class="explanation">
|
|
||||||
<strong>JSON.stringify(data)</strong> converts JavaScript objects to readable text.
|
|
||||||
</div>
|
|
||||||
<button onclick="runTask1()">Run Task 1</button>
|
|
||||||
<div class="output-area" id="output_users">Results will appear here...</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Task 2 -->
|
|
||||||
<div class="task">
|
|
||||||
<h3>👤 Task 2: Get a Specific User</h3>
|
|
||||||
<div class="code-block">fetch('https://api.techshare.cc/api/users/693c0a4357cce1118095f635')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
document.getElementById('output_user').textContent = JSON.stringify(data);
|
|
||||||
})</div>
|
|
||||||
<button onclick="runTask2()">Run Task 2</button>
|
|
||||||
<div class="output-area" id="output_user">Results will appear here...</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Task 3 -->
|
|
||||||
<div class="task">
|
|
||||||
<h3>📝 Task 3: Get All Posts</h3>
|
|
||||||
<div class="code-block">fetch('https://api.techshare.cc/api/posts')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
const titles = data.map(post => post.title);
|
|
||||||
document.getElementById('output_posts').textContent = JSON.stringify(titles);
|
|
||||||
})</div>
|
|
||||||
<div class="explanation">
|
|
||||||
<strong>.map()</strong> extracts just the title from each post.
|
|
||||||
</div>
|
|
||||||
<button onclick="runTask3()">Run Task 3</button>
|
|
||||||
<div class="output-area" id="output_posts">Results will appear here...</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Task 4 -->
|
|
||||||
<div class="task">
|
|
||||||
<h3>➕ Task 4: Create a New Post</h3>
|
|
||||||
<div class="code-block">fetch('https://api.techshare.cc/api/posts', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: { 'Content-Type': 'application/json' },
|
|
||||||
body: JSON.stringify({
|
|
||||||
title: 'My First API Post',
|
|
||||||
content: 'Learning APIs is fun!',
|
|
||||||
userId: 1,
|
|
||||||
published: true
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
document.getElementById('output_create').textContent = JSON.stringify(data);
|
|
||||||
})</div>
|
|
||||||
<div class="explanation">
|
|
||||||
<strong>method: 'POST'</strong> creates new data. <strong>body:</strong> sends our data to the API.
|
|
||||||
</div>
|
|
||||||
<button onclick="runTask4()">Run Task 4</button>
|
|
||||||
<div class="output-area" id="output_create">Results will appear here...</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Section 2: Bonus Challenges -->
|
|
||||||
<div class="section">
|
|
||||||
<h2>💡 Bonus Challenges</h2>
|
|
||||||
|
|
||||||
<div class="task">
|
|
||||||
<h3>🔍 Challenge: Filter Posts by User</h3>
|
|
||||||
<div class="code-block">fetch('https://api.techshare.cc/api/posts')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(posts => {
|
|
||||||
const userPosts = posts.filter(post => post.userId === 1);
|
|
||||||
document.getElementById('output_filter').textContent =
|
|
||||||
'Posts by user 1: ' + userPosts.length;
|
|
||||||
})</div>
|
|
||||||
<div class="explanation">
|
|
||||||
<strong>.filter()</strong> keeps only items matching our condition.
|
|
||||||
</div>
|
|
||||||
<button onclick="runChallenge1()">Run Challenge</button>
|
|
||||||
<div class="output-area" id="output_filter">Results will appear here...</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="note">
|
|
||||||
<strong>💡 Remember:</strong>
|
|
||||||
<code>fetch()</code> gets data → <code>.then()</code> processes it → <code>JSON.stringify()</code> displays it.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// Pre-written solutions for demonstration
|
|
||||||
function runTask1() {
|
|
||||||
fetch('https://api.techshare.cc/api/users')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
document.getElementById('output_users').textContent = JSON.stringify(data);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function runTask2() {
|
|
||||||
fetch('https://api.techshare.cc/api/users/693c0a4357cce1118095f635')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
document.getElementById('output_user').textContent = JSON.stringify(data);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function runTask3() {
|
|
||||||
fetch('https://api.techshare.cc/api/posts')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
const titles = data.map(post => post.title);
|
|
||||||
document.getElementById('output_posts').textContent = JSON.stringify(titles);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function runTask4() {
|
|
||||||
fetch('https://api.techshare.cc/api/posts', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: { 'Content-Type': 'application/json' },
|
|
||||||
body: JSON.stringify({
|
|
||||||
title: 'My First API Post',
|
|
||||||
content: 'Learning APIs is fun!',
|
|
||||||
userId: 1,
|
|
||||||
published: true
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
document.getElementById('output_create').textContent = JSON.stringify(data);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function runChallenge1() {
|
|
||||||
fetch('https://api.techshare.cc/api/posts')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(posts => {
|
|
||||||
const userPosts = posts.filter(post => post.userId == '_693c0a4357cce1118095f635');
|
|
||||||
document.getElementById('output_filter').textContent =
|
|
||||||
'Posts by user 1: ' + userPosts;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
|
||||||
console.log('API Explorer Ready!');
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body></html>
|
|
||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user